背景

在使用MySQL过程,想必都有遇到过CPU突然过高,或者达到100%的情况。
数据库执行查询或数据修改操作时,系统需要执行大量的逻辑读操作,其中逻辑IO包含执行查询所需访问表的数据行数。所以系统需要消耗大量的CPU资源以维护从存储系统读取到内存中的数据一致性。

原因

应用负载(QPS)高:

特征:数据库QPS高,查询比较简单,执行效率高,优化余地小。
表现:没有出现慢查询,或者慢查询不是主要原因,且QPS和CPU使用率曲线变化吻合。
常见场景:该状况常见于应用优化过的在线事务交易系统(例如订单系统)、高读取率的热门Web网站应用、第三方压力工具测试(例如Sysbench)等。

慢SQL导致查询成本高(查询访问表数据行数多):

特征:实例的QPS不高,查询执行效率低、执行时需要扫描大量表数据、优化余地大。 表现:存在慢查询,QPS和CPU使用率曲线变化不吻合。
原因分析:由于查询执行效率低,为获得预期的结果需要访问大量的数据导致平均逻辑IO高,因此在QPS并不高的情况下(例如网站访问量不大),也会导致实例的CPU使用率偏高。

大量行锁冲突、行锁等待

解决

应用负载(QPS)高

对数据库CPU进行升级
数据库查询语句较多可考虑增加读库
可使用缓存查询的尽量使用缓存处理如使用Redis
对于查询数据比较静态、查询重复度高、查询结果集小于1MB的应用,考虑开启查询缓存(Query Cache)。
定期归档历史数据、采用分库分表或者分区的方式减小查询访问的数据量
尽量优化查询,减少查询的执行成本,提高应用可扩展性。

慢SQL导致查询成本高

定位效率低的查询、优化查询的执行效率、降低查询执行的成本。

通过以下方式定位效率低的查询:
执行以下SQL语句,查看当前执行的查询语句。

mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************Id: 1User: system userHost:db: NULL
Command: ConnectTime: 1030455State: Waiting for master to send eventInfo: NULL
*************************** 2. row ***************************Id: 2User: system userHost:db: NULL
Command: ConnectTime: 1004State: Has read all relay log; waiting for the slaveI/O thread to update itInfo: NULL

如果没有FULL关键字, 则仅显示字段 SHOW PROCESSLIST中每个语句的前 100 个字符 。

查询时间长、运行状态为
Sending data(该线程正在读取和处理 SELECT语句的行,并将数据发送到客户端。由于在此状态期间发生的操作往往会执行大量磁盘访问(读取),因此它通常是给定查询生命周期内运行时间最长的状态)、
Copying to tmp table(服务器正在复制到内存中的临时表)、
Copying to tmp table on disk(服务器正在复制到磁盘上的临时表。临时结果集变得太大。因此,线程将临时表从内存中更改为基于磁盘的格式以节省内存)、
Sorting result(对于SELECT语句,这类似于Creating sort index,但对于非临时表)
的查询会话可能均包含性能问题。

通过explain 查看执行计划优化语句解决。

大量行锁冲突、行锁等待

解决方案参考链接:
Lock wait timeout exceeded; try restarting transaction解决

参考连接:
https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html
https://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html

往者不可谏,来者犹可追

MySQL数据库CPU使用率过高,怎么办相关推荐

  1. mysql数据库占用太多的CPU_mysql数据库CPU使用率过高解决方案

    压测时,经常会出现mysql数据库CPU使用率过高,下面介绍一下简单的问题定位方法: 1.确定是否有慢sql语句: 1)登录数据库服务器,连接数据库:执行命令:mysql -uroot -p 密码 2 ...

  2. mysql数据库cpu占用特别高

    (1)多实例的服务器,先top查看是那一个进程占用CPU多: (2)show processeslist 查看线程是否有锁住: (3)查看慢查询,找出执行时间长的sql:explain分析sql是否走 ...

  3. mysql的cpu使用率突然增高_mysql cpu使用率过高解决方法

    mysql cpu使用率过高解决方法 1 mysql查看正在运行的语句 并且查看运行最多的mysql语句 MySQL 打开 general log 后,所有的查询语句都会记录在 general log ...

  4. mysql查询cpu使用率100%_数据库CPU使用率100% 排查记

    1.背景: 在监控线上数据库的运行是否安全.正常的过程中,cpu 使用率是一个重要的指标,一旦cpu使用率飙升至90%+甚至达到100%,必然会对数据库的正常工作产生影响. 在排查数据库的cpu 飙升 ...

  5. 接口压测时MySql对CPU占用过高

    记录MySql过多占用CPU资源的排查过程及解决方案 场景: 1.需要对项目的接口进行压力测试 2.大部分接口压测是正常的 3.只有部分接口压测时MySql对CPU的占用达到90%   压测: 压测线 ...

  6. linux服务器 cpu使用率过高,服务器CPU使用率过高排查与解决思路

    发现服务器的cpu使用率特别高 排查思路: -使用top或者mpstat查看cpu的使用情况 mpstat -P ALL 2 1 Linux 2.6.32-358.el6.x86_64 (linux- ...

  7. linux tomcat cpu占用高,排查tomcat服务器CPU使用率过高

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是由于部署的web程序的问题. 一.征象形貌 在一次线上环境,前台接见页面的速率越来越慢,从浏览器F12中看到发出的请求都是 ...

  8. CPU使用率过高问题排查及Linux之top命令用法详解

    文章目录 问题 解决方案 top命令用法 top各输出参数含义 一.top前5行统计信息 二.进程信息 Top 1的用法 %CPU和us%的区别 问题 公司连续2天服务器告警CPU使用率过高问题,查看 ...

  9. 解决 SQL Server 中 CPU 使用率过高的问题

    本文提供了诊断和修复运行 Microsoft SQL Server 的计算机上 CPU 使用率过高导致的问题的过程. 尽管在 SQL Server 中出现 CPU 使用率过高有许多可能原因,但以下原因 ...

  10. CPU 使用率过高报警,我要原地爆炸了

    最近一直在忙着招人,发现那些来面试的候选者,代码能力虽然不错,但很多都卡在性能优化问题上. 其实,不论你是高级工程师,还是架构师,性能优化的问题都少不了.想彻底解决,就要全面了解程序设计.算法分析.编 ...

最新文章

  1. (C++)1027 打印沙漏
  2. 企业数据中心和互联网数据中心有何不同?
  3. Oracle数据类型简介【转贴】
  4. UVALive 6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
  5. 从xml中返回的对象,和new 返回的对象时不同的。
  6. python爬取正确但不出文件_使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)...
  7. 计算机北大核心期刊排名2020,2017年版北京大学核心期刊目录4(第八版,2018~2020适用)...
  8. ubuntu中网易云音乐图标打不开应用的问题
  9. 计算机换色带技巧,平乐园电脑维修店教你爱普生针式打印机更换色带基本办法...
  10. 语音房间实现的一种方式
  11. PLSQL--表空间管理
  12. 【分治算法】大整数乘法
  13. OpenCV 图像分块 分块图像合并
  14. UDT协议解析及C/C++代码实现
  15. 故事篇:终于给老婆讲明白什么是logback了
  16. Mac最佳视频编辑器推荐
  17. 把计算边界层高度的公式放入模式
  18. Android手机通讯录备份和恢复项目
  19. 破解工具SoftICE与TRW2000操作入门
  20. ArcGIS Pro教程 | 2#用户界面和交互

热门文章

  1. wordpress安装教程_如何安装WordPress –完整的WordPress安装教程
  2. background复合属性顺序_background(css复合写法)
  3. FTP响应码与应答码
  4. C++ 中调用 Jscript 的函数
  5. Gradient Descent
  6. BIOS调整服务器性能模式,BIOS优化性能提升明显 菜鸟必看的BIOS优化设置教程
  7. TP-LINK三层网管交换机通过console接口完成复位操作
  8. idou老师教你学Istio12 : Istio 实现流量镜像
  9. 一个屌丝程序猿的人生(四十二)
  10. 计算机安装xp蓝屏怎么办,xp蓝屏,详细教您教你怎么修复xp蓝屏问题