暂无图片
如何定位出导致单核cpu高的慢查询语句
我来答
分享
暂无图片 匿名用户
如何定位出导致单核cpu高的慢查询语句

通过top语句,查看mysql每个线程的cpu占用情况,如下图


如何能实时捕捉到导致cpu飙升的慢查询语句,麻烦大佬们解答下,谢谢!

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
刘贵宾

通过 show processlist; 或 show full processlist; 命令查看当前执行的查询,反复执行,找到慢查询的process ID

暂无图片 评论
暂无图片 有用 0
刘贵宾
答主
2022-08-25
可以看看这个 https://juejin.cn/post/7062609955009871885
手机用户8157
2022-08-25
感谢,我是想通过线程id直接把实时的慢sql捕捉到,不是说定位找出慢sql,谢谢
张sir

1、查看show full processlist=====》这里会记录当前数据库正在执行的所有的sql的情况,重点关注执行时间。

2、查看慢日志,通过慢日志找到频繁执行的慢SQL。

3、在performance_schema种有threads表,查询threads表,将字段thread_os_id=你查询出来的pid。然后你就能得到prosesslist_id。将这个值,拿去和processlist进行查询,就能得到具体的sql语句。

暂无图片 评论
暂无图片 有用 0
手机用户8157
2022-08-25
感谢,我的意图是想找出当时cpu飙升的实时慢sql,针对您说的第三点实验过不能捕捉到实时的,这个慢sql可能只是瞬间的
手机用户8157

我的意图是想找出当时cpu飙升的实时慢sql,针对您说的第三点实验过不能捕捉到实时的,这个慢sql可能只是瞬间的

暂无图片 评论
暂无图片 有用 0
张sir

做到实时很难,总要有一个采样周期。如果该SQL执行频率比较低,其实危害是有限的。如果是高频慢SQL,调整慢查询时间或者多次执行show processlist,大概率是能捕获到的。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏