mysql 索引引发CPU负载飙升-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

mysql 索引引发CPU负载飙升

简介:
+关注继续查看

[MySQL优化案例]系列 — 典型性索引引发CPU负载飙升问题


1.停掉慢查询

2.停掉无关的服务

3.停掉从库



1.在刚开始的时间,导出show full processlist;

mysql -uroot -p'xx' -Ne "show full processlist;" > /root/process.txt



2.pt-ioprofile --profile-pid=3946 --cell=sizes

2017年 09月 21日 星期四 15:23:38 CST

114688     114688          0          0          0          0          0          0          0 a表

53098      49152          0          0          0          0       3946          0          0 b表


3.比对这两者,注意pread和Sending data


明显是查询慢,以及并发查询导致,io升高


4.最后测试一下这台机器的io


 time dd if=/dev/sdb of=/testrw.dbf bs=4k


5.后期,数据库剥离,方便排错


6.set profiling=1;

show profile cpu,block io for query 1;


可能的原因

1.是经常执行的sql没有加索引,导致执行时间有时候非常长。导致cpu占有到700%

2.pt工具引起的,因为使用pt工具处理慢查询,如果pt和mysql运行同一个磁盘上,也可能产生io瓶颈


分析的过程

用show processlist 看进程是查询慢还是update慢

用show OPEN TABLES where In_use > 0; 查询锁表

最后用lepus查询下,以下sql语句有可能是错的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
AAAAA  BBBBB (为慢查询用到的库名)
select t2.checksum,t2.sample,t2.last_seen,t2.ts_cnt,
t2.Query_time_avg,t2.Query_time_max,t2.Query_time_sum,t2.Lock_time_max,t2.Lock_time_sum
from
(select a.checksum,a.fingerprint,a.sample,a.first_seen,a.last_seen,b.serverid_max,
b.db_max,b.user_max,b.ts_min,b.ts_max,
sum(b.ts_cnt) as ts_cnt,
sum(b.Query_time_sum)/sum(b.ts_cnt) as Query_time_avg, 
max(b.Query_time_max) as Query_time_max, 
min(b.Query_time_min) as Query_time_min,
b.Query_time_sum as Query_time_sum,
max(b.Lock_time_max) as Lock_time_max, 
min(b.Lock_time_min) as Lock_time_min,
sum(b.Lock_time_sum) as Lock_time_sum
from mysql_slow_query_review a join mysql_slow_query_review_history b 
where a.checksum=b.checksum and b.serverid_max='275' 
group by a.checksum ) t2 where 
-- t2.Query_time_avg>4 and t2.ts_cnt>1000
t2.sample like '%AAAAA%' and t2.sample like '%BBBBB%'
and t2.last_seen >  date_sub(now(),interval 2 week) and t2.sample like '%count(1)%'
order by t2.ts_cnt desc limit 1
 
-- order by Query_time_sum desc


wKioL1nErm_hZYF5AAAjwYkCteE104.png


或者


select * from mysql_slow_query_review_history

where sample like '%count(1)%'

and ts_max > '2017-09-21 00:00:00' and ts_max > '2017-09-21 15:00:00'

and db_max = 'db'


show processlist 里面组好能用explain 解析下,这是最靠谱的办法。


还有几个误区


1.Query_time: 4173.803182  Lock_time: 0.000081


2.show processlist 比 直接看binlog执行时间要差点



总结

query time 很严重,要特别注意

binlog执行时间

mysql优化无非是内存,cpu,io,目前看来cpu高,就是慢查询太多,好多sql未加索引



本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1967526,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Redis教程01(linux环境下安装)
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件. 它支持多种类型的数据结构,是我们在开发中使用频率比较高的一个组件。本文主要讲解Redis的安装,后续文章会介绍其相关的知识点。
7 0
ECS初体验
初次使用ESC,摸着石头过河,部署项目,让自己的能力得到了提升。
6 0
ECS使用体验
在阿里云领取了一个服务器,分享一下使用体验
6 0
ECS使用心得体验
强烈的编程爱好让我在编程的道路上越走越远,也让我学到了非常多的知识,同时也发现,学得越多,自己不懂的就越多,只有不断的学习,才能让自己跟上时代发展的步伐。由于在学习过程中使用到了云服务器,然后通过学长学姐的推荐,我了解到了“飞天加速计划•高校学生在家实践”活动,也因此第一次使用了ECS,由此产生了一些使用心得。
6 0
关于对ESC的体验结果
我是一名大二的学生,因着对云服务器有着浓厚的,之前使用过,听说阿里云这里的云服务器还是不错的,就想先申请免费使用两个月试一试。
8 0
Python学习笔记2
Python学习笔记2
8 0
mysql执行计划explain属性解析
所谓执行计划就是看sql执行情况,有没有走索引啊之类的 很简单,在你的select语句前面加个EXPLAIN就行
7 0
Redis教程02(五大数据类型简介)
本文给大家介绍下Redis中的五大数据类型 Redis中的数据都是key/value对,这里的数据类型指的是value的值的类型
3 0
为什么现代网络安全需要人工智能
在最新一轮的信息安全 (InfoSec) 攻击中,攻击者正在通过新的载体部署新型威胁,并利用人工智能的力量增强这些攻击。
17 0
清华AI研究院里程碑事件:成立「智能人机交互研究中心」,发布四大开放平台
昨日(5 月 21 日),清华大学「智能人机交互研究中心」成立仪式在清华大学李兆基科技大楼举行。这是继「知识智能研究中心」、「听觉智能研究中心」、「基础理论研究中心」后,清华大学 AI 研究院第四个研究中心。
8 0
8434
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载