mysql select count(*) 导致CPU使用率上升
#####
msyq 版本:mysql 5.5
操作系统:CentOS 5
2019-06-05
#####
最近监控告警,CPU使用率间歇性上升至 95% 以上,通过 show processlist; 查看,发现存在 60多个活动session 在执行同一个SQL: select count(*) from xxxxx(这里没有where 子句)。
看到这里,大家可能会觉得,哦,问题找到了,因为这SQL 导致CPU使用率上升。这样的判断是否有点武断呢?
CPU 使用率上升是因 还是果呢? 或者说数据库中同时存在 多个 session 执行同一个SQL ,这是因为 CPU 使用率上升导致的还 是因为这个SQL 导致CPU使用率上升的呢?
后来研发组在应用程序上缓存了 该SQL 的结果集,问题解决。这说明确实是该SQL 导致CPU使用率上升的,但我有个凝问,count 类型的操作,没有排序的情况下,不是该占用更多的是I/O 资源吗?
带着这个凝问,我百度了一下,没有找到答案,然后我作了一个测试:在 select count(*) from xxxx 前后通过 show status 查看 Innodb_buffer_pool_read_requests 和 Innodb_buffer_pool_reads 的值,事实证明,该SQL 请求磁盘IO的次数很少,说明大量的数据检索是走的内存。这正好解释 count(*) 类型的查询会导致CPU上升的原因。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29701030/viewspace-2646862/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29701030/viewspace-2646862/
- 点赞
- 收藏
- 分享
- 文章举报
- Mysql 优化之 select count 效率
- Mysql查询语句使用select.. for update导致的数据库死锁分析
- Mysql查询语句使用select.. for update导致的数据库死锁分析
- VC+ADO+MySQL执行select count(*)效率问题
- php查询mysql时,报超出内存错误(select count(distinct))时
- MySQL SELECT count(*) 性能优化
- mysql开发存储过程中,select结果集再动态的条件下select count(*)统计返回都为0问题解决
- mysql技巧之select count的比较
- [MySQL FAQ]系列 -- 为何innodb表select count(*)很慢
- mysql储存过程遇到的坑(while 循环中,select count(*) 总是返回0的解决方案 )
- mysql中select的count星和count1有区别么
- mysql_num_rows($result)和select count()的区别
- MySQL select count(*)、select count(1)效率对比
- MySQL 因 select for update 导致的死锁问题 原因及解决方案
- php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)用法区别
- Mysql模糊查询 select count(*) from sys_invitation where from_id like '%1006%';
- mysql技巧之select count的区别分析
- mysql存储过程中使用select count(*) into 变量名 from +表+ where条件的用法
- php学习之道:mysql SELECT FOUND_ROWS()与COUNT(*)使用方法差别
- mysql技巧之select count的区别分析