mysql sending data的状态导致数据库很慢及无法DDL 操作

sending data状态表示两种情况,一种是mysql已经查询了数据,正在发给客户端;另一种情况是,mysql已经知道某些数据需要去什么地方读取,正在从数据文件中读取;

说明:最近帮忙定位一个mysql查询很慢的问题,定位过程综合各种方法、理论、工具排查问题。

【问题现象】从mysql查询数据的时候,查询的记录数才几条,但查询的速度非常慢,大概要1分钟左右,平时查询30毫秒。

【处理过程】方法一:查看当前运行的SQL(SHOW PROCESSLIST )


发现很长一段时间,查询都处在 “Sending data”状态,这里的关键是Sending dataUPDATE数据

方法二:show profile

注:由于使用阿里云实例有很多不方便的地方。

使用了show profile命令来查看详细的时间分布

首先打开配置:set profiling=on;
执行完查询后,使用show profiles查看query id;
使用show profile for query query_id查看详细信息;

方法三:information_schema.processlist

SELECT concat('KILL ',id,';')FROM information_schema.processlist WHERE time>=500;


【问题原因】

注:MYSQL版本是5.6.16

由于开发人员使用MySQL Event Scheduler事件,

MySql event时间触发器实现满足条件自动更新符合的状态。由于当天晚上数据没有更新完(数据库大约2万条左右,更新时间为53049秒)


【解决方法】KILL相关进程,更改业务需求。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值