mysql 查询 偶发 慢_一个mysql慢查询问题-问答-阿里云开发者社区-阿里云

请教一个慢查询的问题,线上每天都会偶发的有一些慢查询,explain分析之后发现大部分查询都用到了索引,并且返回的数据集也比较小,但是查询结果通常耗费2s+。以下图片是一个explan 结果:

127207a7e68951c16dd407fdf9e93b4b.png

可能大家看不清图片,我简单描述一下,这个表不到100W数据,一个单表查询使用到了联合索引(其实只需要uid就够了),扫描数据大概200多行,返回1行。但是查询结果耗时2s。当然再次执行就无法重现了,因为开启了query_cache。

线上配置自建机房的虚拟机,机械硬盘,mysql是innodb引擎,是一主一从,慢查询是在主库上的。主库“innodb_buffer_pool”是8个G。

PS:先说下我的分析,类似的查询,我使用sql_no_cache排除query_cache的干扰,第一次执行会很慢,再次执行就会很快。从show profile上看耗时也都是在“sending data“上。我怀疑是虚拟机的硬盘IO有点问题,因为第一次数据从硬盘load到buffer_pool,所以比较慢,第二次无论有没有用到index,都是从buffer_pool中直接检索数据,所以比较快。但是从硬盘扫描200多行数据也实在是太慢了吧,所以怀疑是硬盘问题。(另外我们每天都会全量备份数据,而innodb_old_blocks_time设置的是0,所以可能每天都会把buffer pool中的热数据给洗一次。。。,是不是也是坑?!)。如果是硬盘问题,我该如何确认我的想法呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值