mysql调优:SHOW STATUS 查询计数器统计,定位性能问题

使用方式

MYSQL 的 SHOW STATUS 命令会返回一些计数器,既有服务器级别的全局计数器,也有基于某个连接的会话级别的计数器,这在定位一些性能问题时时很好用的一个小工具,不过 SHOW STATUS 返回的只是一些计数,并且还是只读的,并不会剖析性能,所以需要在具体的业务场景下结合一些信息去定位问题,比如可以查询 Queries 总共执行了多少次查询。
SHOW STATUS 会返回一张临时表,这张表中有很多参数,一些参数并不是我们想要看的,所以要结合 where 条件来过滤一下,比如 统计一下总共 执行了多少查询

mysql> show status  where Variable_name like 'Queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Queries       | 65213 |
+---------------+-------+
1 row in set (0.00 sec)

以下是一些常见的观测值

统计线程和连接

有些时候,需要定位一下目前的线程使用情况以及连接情况来分析问题,便可以观察这些计数器,比如查看线程的使用情况,查看慢查询,查看拒绝的连接,查看连接数等一些信息

show status  where Variable_name like 'Connections' 
or Variable_name like 'Max_used_connections' 
or Variable_name like 'Threads%'
or Variable_name like 'Slow%' 
or Variable_name like 'Aborted%';
  • Aborted_clients 连接的应用错误
  • Aborted_connects 拒绝的连接数量
  • Connections 连接数
  • Max_used_connections 最大使用的连接数
  • Slow_launch_threads 慢线程数
  • Slow_queries 慢查询数
  • Threads_cached 缓存线程数
  • Threads_connected 线程连接
  • Threads_created 创建的线程
  • Threads_running 运行的线程

如果 Aborted_connects 不为0,可能意味着网络有问题或某人尝试连接但失败,这个值如果太高,可能就会有mysql阻塞的风险,所以这个值可以参考一下在某些特殊的场景下,比如有表锁导致大量的连接被占用释放不了,然后 Connections 连接数太高连接被耗尽。
Threads_running 运行的线程数量,这个值太高证明当前mysql的负载有问题或者是连接太多或者是有坏的sql导致查询太多处理不过来。

查看二进制日志状态

show status  where Variable_name like 'Binlog%';
  • Binlog_cache_disk_use 有多少事务因超过二进制日志缓存大小被存储到一个临时文件中
  • Binlog_cache_use 在二进制日志缓存中有多少事务被存储过

命令发起的次数统计

show status  where Variable_name like 'Com_%';
  • Com_select 统计 SELECT 语句的数量
  • Questions 统计总查询量和服务器收到的命令数。

Com_ 相关的表可以统计的信息是非常多的,这里只是举了几个比较常用关心的地方,使用这个可以很直观的看到当前 Mysql 的一些命令的使用情况,可以查看 select 语句命令的使用。

统计创建的临时文件和临时表

show status  where Variable_name like 'Created%';
  • Created_tmp_tables 创建的临时表,如果一个查询创建的临时表太多也是一个坏事情
  • Created_tmp_files 创建的临时文件

查询过程中临时表太多也是一个性能损耗比较严重的问题,这个时候可能需要优化一下的你的SQL查询,是否使用了内联查询等关联查询。

统计查询的一些状态信息

show status  where Variable_name like 'Select%';
  • Select_full_join
  • Select_full_range_join
  • Select_range 查询时是否走了索引或者是可用的索引条数
  • Select_range_check 关联查询时可用的索引数目,如果没有,那么查询的开销会非常大
  • Select_scan 整表扫描,如果索引设计不好导致整表扫描次数有些多,是个灾难
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值