在工作中,有时候我们需要了解MySQL服务器的状态信息,这时候,我们可以使用SHOW STATUS命令来查看服务器的状态信息。


SHOW STATUS命令会显示每个服务器变量的名字和值,状态变量是只读的。

我们可以在MySQL客户端下运行SHOW STATUS或者在命令行运用mysqladmin extended-status来查看这些变量。如果使用SQL命令,可以使用LIKE或者WHERE来限制结果。 LIKE可以对变量名做标准模式匹配。

SHOW STATUS中混杂了全局和会话变量,其中许多变量有双重域:既是全局变量,也是会话变量,有相同的名字。 如果只需要看全局变量,需要改为SHOW GLOBAL STATUS查看。

 

查询mysql8 修改全局默认collation mysql查看全局变量_服务器


我们看一下在自己的数据库里执行SHOW STATUS命令时,会得到300多条状态信息,这种情况下,如果直接用这个命令,从中筛选需要的记录也是一个很耗费精力的事情。这时候,我们就可以使用前文所说的LIKE来定制我们的命令。 比如我们需要查看当前服务器启动后的运行时间,可以执行如下:

show status like 'uptime'; 得到如下结果

查询mysql8 修改全局默认collation mysql查看全局变量_mysql_02

如果我们需要查询本次服务器启动之后执行select语句的次数,可以执行如下命令:

show status like 'com_select';

查询mysql8 修改全局默认collation mysql查看全局变量_服务器_03

当然,我们也可以使用通配符来进行模糊匹配,例如:

 

查询mysql8 修改全局默认collation mysql查看全局变量_服务器_04

show status的状态统计项很多,这边可以参考mysql官方手册列出的信息找

到对自己有用的信息: https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html

这边列出部分常用的状态信息查看语句:


--查看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';