日期:2014-05-16 浏览次数:20798 次
原文:http://blog.csdn.net/zztfj/archive/2011/02/12/6181379.aspx
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; --显示安装后的可用存储引擎和默认引擎。
示例:
1 显示该数据库连接使用的字符集的情况
show variables like '%char%';
2 查看MySQL服务器运行的各种状态值
show global status;
3 连接数
01 
mysql> show variables like 'max_connections'; 
02 
+-----------------+-------+ 
03 
| Variable_name?? | Value | 
04 
+-----------------+-------+ 
05 
| max_connections | 500?? | 
06 
+-----------------+-------+ 
07 
08 
mysql> show global status like 'max_used_connections'; 
09 
+----------------------+-------+ 
10 
| Variable_name??????? | Value | 
11 
+----------------------+-------+ 
12 
| Max_used_connections | 498?? | 
13 
+----------------------+-------+ 
设置的最大连接数是500,而响应的连接数是498 
max_used_connections / max_connections * 100% = 99.6% (理想值 ≈ 85%) 
4 key_buffer_size 
key_buffer_size是对MyISAM表性能影响最大的一个参数, 不过数据库中多为Innodb 
01 
mysql> show variables like 'key_buffer_size'; 
02 
+-----------------+----------+ 
03 
| Variable_name?? | Value??? | 
04 
+-----------------+----------+ 
05 
| key_buffer_size | 67108864 | 
06 
+-----------------+----------+ 
07 
08 
mysql> show global status like 'key_read%'; 
09 
+-------------------+----------+ 
10 
| Variable_name???? | Value??? | 
11 
+-------------------+----------+ 
12 
| Key_read_requests | 25629497 | 
13 
| Key_reads???????? | 66071??? | 
14 
+-------------------+----------+ 
一共有25629497个索引读取请求,有66071个请求在内存中没有找到直接从硬盘读取索引,计算索引未命中缓存的概率: 
key_cache_miss_rate = Key_reads / Key_read_requests * 100% =0.27% 
需要适当加大key_buffer_size 
1 
mysql> show global status like 'key_blocks_u%'; 
2 
+-------------------+-------+ 
3 
| Variable_name???? | Value | 
4 
+-------------------+-------+ 
5 
| Key_blocks_unused | 10285 | 
6 
| Key_blocks_used?? | 47705 | 
7 
+-------------------+-------+ 
Key_blocks_unused表示未使用的缓存簇(blocks)数,Key_blocks_used表示曾经用到的最大的blocks数 
Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% ≈ 18% (理想值 ≈ 80%) 
max_used_connections / max_connections * 100% = 99.6% (理想值 ≈ 85%)
5 open table 的情况
1 
mysql> show global status like 'open%tables%'; 
2 
+---------------+-------+ 
3 
| Variable_name | Value | 
4 
+---------------+-------+ 
5 
| Open_tables?? | 1024? | 
6 
| Opened_tables | 1465? | 
7 
+---------------+-------+ 
Open_tables 表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中 table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小,我们查询一下服务器table_cache值 
1 
mysql> mysql> show variables like 'table_cache'; 
2 
+---------------+-------+