记录解决mysql进程占用600%的cpu问题

本文详细解析了一个由于SQL语句不当导致的mysql进程CPU占用过高的问题。通过分析发现,问题根源在于tid字段类型不匹配,使用了错误的索引。调整查询字段类型后,问题得以解决。

    起初发现机器的mysql进程占用cpu很高,开始以为是正常的,就没太关心。闲着没事,就具体查了下原因。

   之所以mysql这么占用cpu,99%和sql语句相关,所有使用show full processlist查询了相关的sql语句,发现几乎都是同一个查询有问题。

   贴出来使用explain一看,我去,扫描100万左右的数据,明显sql语句有问题。

   sql=select * from table where src= 'xxx' and tid = 123

   看了看表的索引,发现索引使用有问题。应该使用src_tid的索引,结果用上另一个src_xxx_xxx的索引.但是这sql不会有问题啊。再看了看字段的数据类型。tid是varchar,查询使用的是int。我擦,这。。。

   查询的int改成string解决。

   要是使用的索引的确是src_tid,传入tid的是int,这问题就真的很难发现了。我靠。。。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值