MySQL优化:使用show status查看MySQL服务器状态信息

在网站开发过程当中,有些时候咱们须要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话链接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SELECT语句、执行了多少UPDATE/DELETE/INSERT语句等统计信息,从而便于咱们根据当前MySQL服务器的运行状态进行对应的调整或优化工做。缓存

在MySQL中,咱们可使用SHOW STATUS指令语句来查看MySQL服务器的状态信息。下面,咱们以DOS命令窗口的形式链接MySQL,并执行show status;指令,咱们将看到以下显示信息:服务器

执行show status指令显示的部分结果执行show status指令显示的部分结果post

当咱们执行show status语句时,MySQL将会列出多达300多条的状态信息记录,其中包括了供咱们查看了解的各类信息。不过,若是直接使用show status指令获得300多条记录,会让咱们看得眼花缭乱,所以咱们但愿可以「按需查看」一部分状态信息。这个时候,咱们能够在show status语句后加上对应的like子句。例如,咱们想要查看当前MySQL启动后的运行时间,咱们能够执行以下语句:性能

--查询当前MySQL本次启动后的运行统计时间 show status like 'uptime';

此时,咱们就能够看到以下结果:优化

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 5667  |
+---------------+-------+
1 row in set (0.00 sec)

一样的,若是咱们要本次MySQL启动后执行的SELECT语句的次数,咱们能够执行以下语句:网站

show status like 'com_select';

对应输出结果以下:spa

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_select    | 1     |
+---------------+-------+
1 row in set (0.00 sec)

此外,与WHERE子句中的LIKE关键字相似,show status后的LIKE关键字也可使用'_'或'%'等通配符来进行模糊匹配。例如咱们能够执行以下语句来查看MySQL服务器的线程信息:线程

show status like 'Thread_%';

对应输出结果以下:code

+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 0     |
| Threads_connected | 1     |
| Threads_created   | 1     |
| Threads_running   | 1     |
+-------------------+-------+
4 rows in set (0.00 sec)

值得注意的是,在上述show status like 'com_select'指令的执行示例中,显示的SELECT语句统计信息仅仅表示当前会话链接执行的SELECT语句数量。由于,show status指令的完整语法以下:开发

SHOW [统计范围] STATUS [LIKE '状态项名称'] --统计范围关键字分为GLOBALSESSION(或LOCAL)两种。

show status的完整语法中,"[]"中的部分是可选的,若是咱们的show status语句中不包含统计范围关键字,则默认统计范围为SESSION,也就是只统计当前链接的状态信息。若是咱们须要查询自当前MySQL启动后全部链接执行的SELECT语句总数,咱们能够执行以下语句:

show global status like 'com_select';

以上便是show status的详细用法。因为show status的状态统计项较多,咱们就再也不一一解释每一个统计项的具体含义,在这里,咱们仅列出部分经常使用的状态信息查看语句:

 
 
  1. --查看MySQL本次启动后的运行时间(单位:秒)
  2. show status like 'uptime';
  3. --查看select语句的执行数
  4. show [global] status like 'com_select';
  5. --查看insert语句的执行数
  6. show [global] status like 'com_insert';
  7. --查看update语句的执行数
  8. show [global] status like 'com_update';
  9. --查看delete语句的执行数
  10. show [global] status like 'com_delete';
  11. --查看试图链接到MySQL(无论是否链接成功)的链接数
  12. show status like 'connections';
  13. --查看线程缓存内的线程的数量。
  14. show status like 'threads_cached';
  15. --查看当前打开的链接的数量。
  16. show status like 'threads_connected';
  17. --查看当前打开的链接的数量。
  18. show status like 'threads_connected';
  19. --查看建立用来处理链接的线程数。若是Threads_created较大,你可能要增长thread_cache_size值。
  20. show status like 'threads_created';
  21. --查看激活的(非睡眠状态)线程数。
  22. show status like 'threads_running';
  23. --查看当即得到的表的锁的次数。
  24. show status like 'table_locks_immediate';
  25. --查看不能当即得到的表的锁的次数。若是该值较高,而且有性能问题,你应首先优化查询,而后拆分表或使用复制。
  26. show status like 'table_locks_waited';
  27. --查看建立时间超过slow_launch_time秒的线程数。
  28. show status like 'slow_launch_threads';
  29. --查看查询时间超过long_query_time秒的查询的个数。
  30. show status like 'slow_queries';
相关文章
相关标签/搜索