MySQL服务器属性状态
SHOW STATUS 与 SHOW VATIVABLES 区别
1、show status
查看系统运行的实时状态,便于查看MySQL当前运行的状态,做出相应优化。
2、show variables
查看系统参数,系统默认设置的参数,属于静态属性。可以通过在my.cnf配置文件中修改
常见查看的参数以及状态有:
-
查看数据库的最大连接数
show variables like 'max_connections';
-
查看数据库连接空闲超时最大时间
show variables like '%timeout%';
其中wait_timeout:服务器关闭非交互连接之前等待活动的秒数;
interactive_timeout:服务器关闭交互式连接前等待活动的秒数;
数据库默认连接空闲最长时间为28800s,也就是8个小时。这个值其实可以修改小一些。并且我们在配置连接池的
max-lifetime
属性时,一定要比数据库的wait_timeout
小才可以。 -
查看数据库当前连接数
show status like 'Threads_%';
Thread_cached:数据库连接缓存池,和java连接池类似;当有一个新的请求的时候,mysql不会立即去创建连接 线程,而是先去Thread_Cache中去查找空闲的连接线程,如果存在则直接使用。关于此配置相关的参数:thread_cache_size
如果短连接较多时,可以将该值适当的加大;
Threads_connected:当前正在连接的连接数
Thread_created:已经创建了的连接的数量
Thread_running:正在活跃的连接个数(也就是此时并发的连接数)
注:thread_cache命中率,公式为: Thread_Cache_Hit=(Connections-Thread_created)/Connections*100% 如果命中率很低的话可以适当的加大thread_cache_size
值;
-
查看数据库最大并发数
show status like '%connections%';
Connections:累计试图连接数据库的次数Max_used_connections:数据库最高并发连接数(服务器响应的最大连接数)
注:对于mysql服务器最大连接数值的设置范围比较理想的是:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上
其实这里还有一点让我怀疑:为什么我的数据库最高并发数和数据库已创建的连接数一样的?(感觉应该是我连接池最大连接数设置小了,不知道这个猜测是否有道理)
-
检查连接是否正常关闭
show status like 'Aborted_%';
Aborted_clients :由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects :尝试已经失败的MySQL服务器的连接的次数。
其实这两个值我感觉应该是我之前对java连接池没有正确配置相应参数的问题;这个两个异常的数据应该是对应我们数据库连接池中的maxLifetime
和idleTimeout
以及connection-test-query
,配置上这几个参数应该问题就不大了,具体意思大家可以看一下前面介绍连接池的文章。
关于经常查看的参数状态差不多就是这些,后续遇到有用到的再补充。其实也是自己了解的还太少…