13.7.5.1 SHOW AUTHORS Syntax
13.7.5.2 SHOW BINARY LOGS Syntax
13.7.5.3 SHOW BINLOG EVENTS Syntax
13.7.5.4 SHOW CHARACTER SET Syntax
13.7.5.5 SHOW COLLATION Syntax
13.7.5.6 SHOW COLUMNS Syntax
13.7.5.7 SHOW CONTRIBUTORS Syntax
13.7.5.8 SHOW CREATE DATABASE Syntax
13.7.5.9 SHOW CREATE EVENT Syntax
13.7.5.10 SHOW CREATE FUNCTION Syntax
13.7.5.11 SHOW CREATE PROCEDURE Syntax
13.7.5.12 SHOW CREATE TABLE Syntax
13.7.5.13 SHOW CREATE TRIGGER Syntax
13.7.5.14 SHOW CREATE VIEW Syntax
13.7.5.15 SHOW DATABASES Syntax
13.7.5.16 SHOW ENGINE Syntax
13.7.5.17 SHOW ENGINES Syntax
13.7.5.18 SHOW ERRORS Syntax
13.7.5.19 SHOW EVENTS Syntax
13.7.5.20 SHOW FUNCTION CODE Syntax
13.7.5.21 SHOW FUNCTION STATUS Syntax
13.7.5.22 SHOW GRANTS Syntax
13.7.5.23 SHOW INDEX Syntax
13.7.5.24 SHOW MASTER STATUS Syntax
13.7.5.25 SHOW OPEN TABLES Syntax
13.7.5.26 SHOW PLUGINS Syntax
13.7.5.27 SHOW PRIVILEGES Syntax
13.7.5.28 SHOW PROCEDURE CODE Syntax
13.7.5.29 SHOW PROCEDURE STATUS Syntax
13.7.5.30 SHOW PROCESSLIST Syntax
13.7.5.31 SHOW PROFILE Syntax
13.7.5.32 SHOW PROFILES Syntax
13.7.5.33 SHOW RELAYLOG EVENTS Syntax
13.7.5.34 SHOW SLAVE HOSTS Syntax
13.7.5.35 SHOW SLAVE STATUS Syntax
13.7.5.36 SHOW STATUS Syntax
13.7.5.37 SHOW TABLE STATUS Syntax
13.7.5.38 SHOW TABLES Syntax
13.7.5.39 SHOW TRIGGERS Syntax
13.7.5.40 SHOW VARIABLES Syntax
13.7.5.41 SHOW WARNINGS Syntax
SHOW has many forms that provide information about databases, tables, columns, or status information about the server. This section describes those following:
SHOW AUTHORS
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CONTRIBUTORS
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW SLAVE HOSTS
SHOW SLAVE STATUS
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]
like_or_where:
LIKE 'pattern'
| WHERE expr
If the syntax for a given SHOW statement includes a LIKE 'pattern' part, 'pattern' is a string that can contain the SQL % and _ wildcard characters. The pattern is useful for restricting statement output to matching values.
Several SHOW statements also accept a WHERE clause that provides more flexibility in specifying which rows to display. See Section 21.33, “Extensions to SHOW Statements”.
Many MySQL APIs (such as PHP) enable you to treat the result returned from a SHOW statement as you would a result set from a SELECT; see Chapter 23, Connectors and APIs, or your API documentation for more information. In addition, you can work in SQL with results from queries on tables in the INFORMATION_SCHEMA database, which you cannot easily do with results from SHOW statements. See Chapter 21, INFORMATION_SCHEMA Tables.
mysql> help show;
Name: 'SHOW'
Description:
SHOW has many forms that provide information about databases, tables,
columns, or status information about the server. This section describes
those following:
SHOW {BINARY | MASTER} LOGS
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW CHARACTER SET [like_or_where]
SHOW COLLATION [like_or_where]
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [like_or_where]
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION func_name
SHOW CREATE PROCEDURE proc_name
SHOW CREATE TABLE tbl_name
SHOW CREATE TRIGGER trigger_name
SHOW CREATE VIEW view_name
SHOW DATABASES [like_or_where]
SHOW ENGINE engine_name {STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW EVENTS
SHOW FUNCTION CODE func_name
SHOW FUNCTION STATUS [like_or_where]
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW MASTER STATUS
SHOW OPEN TABLES [FROM db_name] [like_or_where]
SHOW PLUGINS
SHOW PROCEDURE CODE proc_name
SHOW PROCEDURE STATUS [like_or_where]
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW PROFILE [types] [FOR QUERY n] [OFFSET n] [LIMIT n]
SHOW PROFILES
SHOW RELAYLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
SHOW SLAVE HOSTS
SHOW SLAVE STATUS [FOR CHANNEL channel]
SHOW [GLOBAL | SESSION] STATUS [like_or_where]
SHOW TABLE STATUS [FROM db_name] [like_or_where]
SHOW [FULL] TABLES [FROM db_name] [like_or_where]
SHOW TRIGGERS [FROM db_name] [like_or_where]
SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]
SHOW WARNINGS [LIMIT [offset,] row_count]
like_or_where:
LIKE 'pattern'
| WHERE expr
If the syntax for a given SHOW statement includes a LIKE 'pattern'
part, 'pattern' is a string that can contain the SQL % and _ wildcard
characters. The pattern is useful for restricting statement output to
matching values.
Several SHOW statements also accept a WHERE clause that provides more
flexibility in specifying which rows to display. See
http://dev.mysql.com/doc/refman/5.7/en/extended-show.html.
URL: http://dev.mysql.com/doc/refman/5.7/en/show.html
MySQL
中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法。
1. show tables或show tables from database_name; -- 显示当前
数据库
中所有表的名称。
2. show databases; -- 显示
mysql
中所有数据库的名称。
3. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。
4. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。
5. show index from table_name; -- 显示表的索引。
6. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。
7. show variables; -- 显示系统变量的名称和值。
8. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
9. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
10. show privileges; -- 显示服务器所支持的不同权限。
11. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。
12. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。
13. show engines; -- 显示安装以后可用的存储引擎和默认引擎。
14. show innodb status; -- 显示innoDB存储引擎的状态。
15. show logs; -- 显示BDB存储引擎的日志。
16. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。
17. show errors; -- 只显示最后一个执行语句所产生的错误。
18. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。
show tables或show tables from database_name或show database_name.tables;
解释:显示当前数据库中所有表的名称
show databases;
解释:显示mysql中所有数据库的名称
show processlist;
解释:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看
他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
show table status;
解释:显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间
show columns from table_name from database_name; 或show columns from database_name.table_name;或show fields;
解释:显示表中列名称(和 desc table_name 命令的效果是一样的)
show grants for user_name@localhost;
解释:显示一个用户的权限,显示结果类似于grant 命令
show index from table_name;或show keys;
解释:显示表的索引
show status;
解释:显示一些系统特定资源的信息,例如,正在运行的线程数量
show variables;
解释:显示系统变量的名称和值
show privileges;
解释:显示服务器所支持的不同权限
show create database database_name;
解释:显示创建指定数据库的SQL语句
show create table table_name;
解释:显示创建指定数据表的SQL语句
show engies;
解释:显示安装以后可用的存储引擎和默认引擎。
show innodb status;
解释:显示innoDB存储引擎的状态
show logs;
解释:显示BDB存储引擎的日志
show warnings;
解释:显示最后一个执行的语句所产生的错误、警告和通知
show errors;
解释:只显示最后一个执行语句所产生的错误
上面的大部分命令都可以用like,比如 show table like ‘%abce%’ 。
附:
show status 结果说明
列 | 含义 |
Name | 表名 |
Type | 表的类型 (ISAM,MyISAM或HEAP) |
Row_format | 行存储格式 (固定, 动态, 或压缩) |
Rows | 行数量 |
Avg_row_length | 平均行长度 |
Data_length | 数据文件的长度 |
Max_data_length | 数据文件的最大长度 |
Index_length | 索引文件的长度 |
Data_free | 已分配但未使用了字节数 |
Auto_increment | 下一个 autoincrement(自动加1)值 |
Create_time | 表被创造的时间 |
Update_time | 数据文件最后更新的时间 |
Check_time | 最后对表运行一个检查的时间 |
Create_options | 与CREATE TABLE一起使用的额外选项 |
Comment | 当创造表时,使用的注释 (或为什么MySQL不能存取表信息的一些信息)。 |
show index 结果说明:
列 | 含义 |
Table | 表名 |
Non_unique | 0,如果索引不能包含重复。 |
Key_name | 索引名 |
Seq_in_index | 索引中的列顺序号, 从 1 开始。 |
Column_name | 列名。 |
Collation | 列怎样在索引中被排序。在MySQL中,这可以有值A(升序) 或NULL(不排序)。 |
Cardinality | 索引中唯一值的数量。这可通过运行isamchk -a更改. |
Sub_part | 如果列只是部分被索引,索引字符的数量。NULL,如果整个键被索引。 |
show variables 结果说明:
Aborted_clients | 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。 |
Aborted_connects | 尝试已经失败的MySQL服务器的连接的次数。 |
Connections | 试图连接MySQL服务器的次数。 |
Created_tmp_tables | 当执行语句时,已经被创造了的隐含临时表的数量。 |
Delayed_insert_threads | 正在使用的延迟插入处理器线程的数量。 |
Delayed_writes | 用INSERT DELAYED写入的行数。 |
Delayed_errors | 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。 |
Flush_commands | 执行FLUSH命令的次数。 |
Handler_delete | 请求从一张表中删除行的次数。 |
Handler_read_first | 请求读入表中第一行的次数。 |
Handler_read_key | 请求数字基于键读行。 |
Handler_read_next | 请求读入基于一个键的一行的次数。 |
Handler_read_rnd | 请求读入基于一个固定位置的一行的次数。 |
Handler_update | 请求更新表中一行的次数。 |
Handler_write | 请求向表中插入一行的次数。 |
Key_blocks_used | 用于关键字缓存的块的数量。 |
Key_read_requests | 请求从缓存读入一个键值的次数。 |
Key_reads | 从磁盘物理读入一个键值的次数。 |
Key_write_requests | 请求将一个关键字块写入缓存次数。 |
Key_writes | 将一个键值块物理写入磁盘的次数。 |
Max_used_connections | 同时使用的连接的最大数目。 |
Not_flushed_key_blocks | 在键缓存中已经改变但是还没被清空到磁盘上的键块。 |
Not_flushed_delayed_rows | 在INSERT DELAY队列中等待写入的行的数量。 |
Open_tables | 打开表的数量。 |
Open_files | 打开文件的数量。 |
Open_streams | 打开流的数量(主要用于日志记载) |
Opened_tables | 已经打开的表的数量。 |
Questions | 发往服务器的查询的数量。 |
Slow_queries | 要花超过long_query_time时间的查询数量。 |
Threads_connected | 当前打开的连接的数量。 |
Threads_running | 不在睡眠的线程数量。 |
Uptime | 服务器工作了多少秒。 |
关于上面的一些注释:
- 如果Opened_tables太大,那么你的table_cache变量可能太小。
- 如果key_reads太大,那么你的key_cache可能太小。缓存命中率可以用key_reads/key_read_requests计算。
- 如果Handler_read_rnd太大,那么你很可能有大量的查询需要MySQL扫描整个表或你有没正确使用键值的联结(join)。
①、获取运行中的mysql进程使用各服务器参数及其值
修改服务器变量的值(此类修改服务器重启后将失效,如果想永久有效需要添加到配置文件中。其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效。有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置)
查看查询缓存是否开启和查询缓存的大小
查看SELECT语句查询的次数和命中的次数
②、状态变量:用于保存mysqld运行中的统计数据的变量,不可修改
③、查看字符集和排序规则
④、查看警告信息
MariaDB [hellodb]> SHOW WARNINGS;
⑤、查看表状态
MariaDB [hellodb]> SHOW TABLE STATUS LIKE 'toc'\G
⑥、查看指定数据库指定表的索引
MariaDB [hellodb]> SHOW INDEXES FROM mysql.user\G
⑦、不会真正执行语句,只会去分析查询语句查询过程中是否使用了索引以及如何实现数据获取
⑧、查看当前mysql连接的线程
MariaDB [hellodb]> SHOW PROCESSLIST;
⑨、查看当前会话的事务隔离级别
⑩、查询缓存相关的服务器变量
查询缓存:
如何判断是否命中:
通过查询语句的哈希值判断:哈希值考虑的因素包括
查询本身、要查询的数据库、客户端使用协议版本,...
查询语句任何字符上的不同,都会导致缓存不能命中;
哪此查询可能不会被缓存?
查询中包含UDF、存储函数、用户自定义变量、临时表、mysql库中系统表、或者包含列级权限的表、有着不确定值的函数(Now());
⑩①、查询相关的状态变量
⑩②、获取查询执行计划信息,用来查看查询优化器如何执行查询;
输出分析:
id: 当前查询语句中,每个SELECT语句的编号;
简单类型的查询
复杂类型的查询有三种:
简单子查询用于WHERE;
用于FROM中的子查询;
联合查询:UNION(UNION查询的分析结果会出现一外额外匿名临时表);
select_type:查询的类型
简单查询为SIMPLE
复杂查询:
SUBQUERY: 简单子查询;
DERIVED: 用于FROM中的子查询;
UNION:UNION语句的第一个之后的SELECT语句;
UNION RESULT: 匿名临时表;
table:SELECT语句关联到的表
type:关联类型,或访问类型,即MySQL决定的如何去查询表中的行的方式
ALL: 全表扫描;
index:根据索引的次序进行全表扫描;如果在Extra列出现“Using index”表示了使用覆盖索引,而非全表扫描;
range:有范围限制的根据索引实现范围扫描;扫描位置始于索引中的某一点,结束于另一点;
ref: 根据索引返回表中匹配某单个值的所有行;
eq_ref:仅返回一个行,但与需要额外与某个参考值做比较;
const, system: 直接返回单个行;
possible_keys:查询可能会用到的索引
key: 查询中使用了的索引
key_len: 在索引使用的字节数
ref: 在利用key字段所表示的索引完成查询时所有的列或某常量值
rows:MySQL估计为找所有的目标行而需要读取的行数
Extra:额外信息
Using index:MySQL将会使用覆盖索引,以避免访问表;
Using where:MySQL服务器将在存储引擎检索后,再进行一次过滤;
Using temporary:MySQL对结果排序时会使用临时表;
Using filesort:对结果使用一个外部索引排序;
⑩③、查询各日志的相关配置
⑩④、二进制日志查询相关信息