利用等待(wait)事件排查MySQL性能问题.md

整理自《MySQL性能优化金字塔法则》P93 - 96

启用等待(wait)事件的采集与统计

开启 采集所有等待事件的信息 的功能

use performance_schema;
update setup_instruments set enabled='yes', timed='yes' where name like 'wait/%';

开启 等待事件信息 的统计功能

update setup_consumers set enabled='yes' where name like '%wait%';

模拟压力

[root@db30 ~]# sysbench --db-driver=mysql --time=320 --threads=4 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=qbench --mysql-password=qbench --mysql-db=sbtest --tables=3 --table-size=2000000 oltp_read_write --db-ps-mode=disable run

查看操作系统各项指标

通过topiostat命令查看此时的系统性能情况

查看MySQL等待事件信息

为了方便查询等待事件的统计信息,创建视图,用于实时统计当前等待事件(非历史数据)

create view sys.test_waits as 
select 
sum(timer_wait) as TIMER_WAIT,
sum(NUMBER_OF_BYTES) as NUMBER_OF_BYTES,
EVENT_NAME,OPERATION 
from performance_schema.events_waits_current
where EVENT_NAME != 'idle' 
group by EVENT_NAME,OPERATION;

从上方视图中查询当前时间开销较大的等待事件

select sys.format_time(TIMER_WAIT),sys.format_bytes(NUMBER_OF_BYTES),EVENT_NAME,OPERATION 
from sys.test_waits 
where sys.format_time(TIMER_WAIT) not regexp 'ns|us'
order by TIMER_WAIT desc;

+-----------------------------+-----------------------------------+----------------------------------------------+-----------+
| sys.format_time(TIMER_WAIT) | sys.format_bytes(NUMBER_OF_BYTES) | EVENT_NAME                                   | OPERATION |
+-----------------------------+-----------------------------------+----------------------------------------------+-----------+
| 18.69 m                     | NULL                              | wait/synch/cond/sql/COND_compress_gtid_table | wait      |
+-----------------------------+-----------------------------------+----------------------------------------------+-----------+

或者直接从event_waits_current表查找(返回的数据行数可能比较多,且对查询结果没有做分组聚合,是逐行的事件记录数据

select *
from
performance_schema.events_waits_current
where EVENT_NAME != 'idle'
order by TIMER_WAIT DESC;

另求助:
wait/synch/cond/sql/COND_compress_gtid_table
好像是压缩gtid_executed表,但为什么会等这么久?求助

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值