MySQL使用show status查看MySQL服务器状态信息
在lamp架构的网站开发过程中,有些时候我们需要了解mysql的服务器状态信息,譬如当前mysql启动后的运行时间,当前mysql的客户端会话连接数,当前mysql服务器执行的慢查询数,当前mysql执行了多少select语句、执行了多少update/delete/insert语句等统计信息,从而便于我们根据当前mysql服务器的运行状态进行对应的调整或优化工作。
在mysql中,我们可以使用show status指令语句来查看mysql服务器的状态信息。下面,我们以dos命令窗口的形式连接mysql,并执行show status;指令,我们将看到如下显示信息:
当我们执行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';
对应输出结果如下:
+---------------+-------+ | variable_name | value | +---------------+-------+ | com_select | 1 | +---------------+-------+ 1 row in set (0.00 sec)
此外,与where子句中的like关键字类似,show status后的like关键字也可以使用'_' 或'%'等通配符来进行模糊匹配。例如我们可以执行如下语句来查看mysql服务器的线程信息:
show status like 'thread_%';
对应输出结果如下:
+-------------------+-------+ | 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 '状态项名称'] --统计范围关键字分为global和session(或local)两种。
在show status的完整语法中,"[]"中的部分是可选的,如果我们的show status语句中不包含统计范围关键字,则默认统计范围为session,也就是只统计当前连接的状态信息。如果我们需要查询自当前mysql启动后所有连接执行的select语句总数,我们可以执行如下语句:
show global status like 'com_select';
以上即是show status的详细用法。由于show status的状态统计项较多,我们就不再一一解释每个统计项的具体含义,在这里,我们仅列出部分常用的状态信息查看语句:
--查看mysql本次启动后的运行时间(单位:秒) show status like 'uptime'; --查看select语句的执行数 show [global] status like 'com_select'; --查看insert语句的执行数 show [global] status like 'com_insert'; --查看update语句的执行数 show [global] status like 'com_update'; --查看delete语句的执行数 show [global] status like 'com_delete'; --查看试图连接到mysql(不管是否连接成功)的连接数 show status like 'connections'; --查看线程缓存内的线程的数量。 show status like 'threads_cached'; --查看当前打开的连接的数量。 show status like 'threads_connected'; --查看当前打开的连接的数量。 show status like 'threads_connected'; --查看创建用来处理连接的线程数。如果threads_created较大,你可能要增加thread_cache_size值。 show status like 'threads_created'; --查看激活的(非睡眠状态)线程数。 show status like 'threads_running'; --查看立即获得的表的锁的次数。 show status like 'table_locks_immediate'; --查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。 show status like 'table_locks_waited'; --查看创建时间超过slow_launch_time秒的线程数。 show status like 'slow_launch_threads'; --查看查询时间超过long_query_time秒的查询的个数。 show status like 'slow_queries';
上面的内容就介绍到这,其他的可以参考以前的文章。
推荐阅读
-
MySQL使用show status查看MySQL服务器状态信息
-
MySQL使用show status查看MySQL服务器状态信息
-
MySQL SHOW STATUS语句的使用
-
linux服务器下查看mysql的安装信息
-
管理MySQL服务器、获取运行状态的mysqladmin客户端的使用介绍
-
MySQL中SHOW STATUS查看运行状况
-
Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态_MySQL
-
linux服务器下如何查看mysql安装信息的详细介绍
-
Linux中使用mysqladmin extended-status配合Linux命令查看MySQL运行状态_MySQL
-
使用mysqlreport查看Mysql数据库信息