mysql 索引引发CPU负载飙升

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

[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,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
关系型数据库 MySQL 索引
mysql 分析5语句的优化--索引添加删除
mysql 分析5语句的优化--索引添加删除
11 0
|
15天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
|
21天前
|
存储 自然语言处理 关系型数据库
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
35 0
|
21天前
|
SQL 存储 关系型数据库
MySQL not exists 真的不走索引么
MySQL not exists 真的不走索引么
24 0
|
25天前
|
SQL 存储 关系型数据库
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
索引下推是MySQL 5.6引入的优化,允许部分WHERE条件在索引中处理,减少回表次数。例如,对于索引(zipcode, lastname, firstname),查询`WHERE zipcode='95054' AND lastname LIKE '%etrunia%'`时,索引下推先过滤zipcode,然后在索引中应用lastname条件,降低回表需求。索引下推可在EXPLAIN的`Using index condition`中看到。
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
|
1月前
|
监控 关系型数据库 MySQL
MySQL创建索引的注意事项
在数据库设计和优化中,索引的合理使用是提高查询性能和加速数据检索的关键因素之一。通过选择适当的列、了解数据分布、定期维护和监控索引性能,我们能够最大程度地发挥索引的优势,提高数据库的效率和响应速度。
29 0
|
1月前
|
关系型数据库 MySQL 数据库
MySQL索引和查询优化
MySQL索引和查询优化
33 1
|
1月前
|
SQL 关系型数据库 MySQL
MySQL索引与事务
MySQL索引与事务
|
1月前
|
监控 关系型数据库 MySQL
MySQL创建索引的注意事项
在索引的世界中,权衡是关键。权衡读写性能,权衡索引的数量和类型,权衡查询的频率和数据分布。通过谨慎的设计、定期的维护和持续的监控,我们能够确保索引在数据库中的角色得到最大的发挥,为应用提供更加高效和可靠的数据访问服务。在数据库优化的旅途中,索引是我们的得力助手,正确使用它将使数据库系统更具竞争力和可维护性。
18 0
|
1月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
159 0