用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况。本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因及其相应的解决方案。

常见原因

系统执行应用提交查询(包括数据修改操作)时需要大量的逻辑读(逻辑 IO,执行查询所需访问的表的数据行数),所以系统需要消耗大量的 CPU 资源以维护从存储系统读取到内存中的数据一致性。

说明:大量行锁冲突、行锁等待或后台任务也有可能会导致实例的 CPU 使用率过高,但这些情况出现的概率非常低,本文不做讨论。

一、定位问题SQL

数据库CPU超频,首要原因分析为执行SQL导致,先定位正在执行的SQL

# 进入数据库连接工具,或者MySQL命令客户端

# 查询正在执行的SQL

select * from information_schema.`PROCESSLIST` where info is not null;

根据COMMAND、TIME、STATE、INFO三个字段查询SQL信息

COMMAND - 执行的数据操作类型

TIME - 执行的时间

STATE - 执行的状态

INFO - 执行的具体SQL

发现很长一段时间,查询都处在 “Sending data”状态

查询一下“Sending data”状态的含义,原来这个状态的名称很具有误导性,所谓的“Sending data”并不是单纯的发送数据,而是包括“收集 + 发送 数据”。

这里的关键是为什么要收集数据,原因在于:mysql使用“索引”完成查询结束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“数据行”上将需要返回的数据读取出来返回个客户端。

二、使用explain查看SQL使用索引过程

explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句

使用方法,在select语句前加上explain就可以了,下面是一个使用explain查询SQL的例子

explain select * from user_info where tel = '17000000000';

三、show profile

为了进一步验证查询的时间分布,于是使用了show profile命令来查看详细的时间分布

首先打开配置:set profiling=on;

执行完查询后,使用show profiles查看query id;

使用show profile for query query_id查看详细信息;

mysql 写入400_MySQL5.7运行CPU达百分之400处理方案相关推荐

  1. 阿里云 mysql 100_MySQL服务进程占用系统CPU达100%-阿里云开发者社区

    故障现象:ping云主机严重丢包,丢包率达99%,仅有一两个包可到达:更无法远程: 排查:云主机 CentOS6.4 后台查看CPU占用高达99% 还好能登入系统,操作也并不卡顿: top查看 mys ...

  2. Nginx运行CPU亲和力

    Nginx运行CPU亲和力 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/c ...

  3. mysql 编译cpu数量_合适MySQL的Xeon 55XX系列CPU编译参数

    适合mysql的Xeon 55XX系列CPU编译参数 本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.penglixu ...

  4. 分散mysql的写入压力_缓解MySQL写入压力和主从延迟的尝试

    标签: 缓解MySQL写入压力和主从延迟的尝试 http://mp.weixin.qq.com/s?__biz=MzA5Njg5ODMzMg==&mid=208512935&idx=1 ...

  5. MySQL怎么导入webcontent_把网页信息添加到mysql,在MyEclipse运行Tomcat出现下面的错误,弄不明白,求助怎么解决呀...

    把网页信息添加到mysql,在MyEclipse运行Tomcat出现下面的错误,弄不明白,求助怎么解决呀0 letian012014.01.05浏览132次分享举报 获取的数据源是出错 2010-3- ...

  6. dev可以运行mysql文件夹_Linux查看mysql 安装路径和运行路径

    一.查看文件安装路径 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址). 这里以mysql为例.比如说我安装了mysql,但是不知道文件都安装在哪些地方.放在哪些文件夹里,可以用 ...

  7. Mysql写入数据时,adapter 日志报ES连接错误

    Mysql写入数据时,adapter 日志报ES连接错误 日志如下: 2021-09-20 13:51:03.795 [pool-1-thread-1] ERROR c.a.otter.canal.a ...

  8. 易语言mysql乱码_分享一个解决MySQL写入中文乱码的方法

    [编程语言:易语言] 之前有发帖请教过如何解决MySQL写入中文乱码的问题.但没人会,或者是会的人不想回答.搜索网上的答案并尝试很多次无效,所以当时就因为这个乱码问题搁浅了一个软件很多日子. 直到昨天 ...

  9. mysql 数据缓冲区,MySQL写入缓冲区在数据库中的作用( Change Buffer )

    原标题:MySQL写入缓冲区在数据库中的作用( Change Buffer ) 介绍另外一种重要的数据变更日志,也就是InnoDB change buffer.Change buffer的主要目的是将 ...

最新文章

  1. 制作安全网站的checklist
  2. 跨编译单元之初始化次序
  3. 鸟哥的Linux私房菜基础学习篇(第二版)第十二章课后习题与答案
  4. C# DropDownList 绑定枚举类
  5. C# WinForm 弹出模式窗口操作滚动条
  6. 使用redis的发布订阅模式实现消息队列
  7. CodeForces 869E The Untended Antiquity 二维树状数组,随机hash
  8. c语言 void**类型转换,void *和其他指针的转化
  9. 数据时代总结思维导图模板分享及绘制技巧
  10. am335x mysql_Ubuntu下编译ARM平台QtEmbedded的MySQL和MySQL插件
  11. 2016年事记与感悟
  12. 流程图讲解_流程图小作文练习,详细讲解+精选范文!你们的魔鬼来了(一)...
  13. 从NASA获取全球气象数据
  14. 高速公路收费站通行能力分析与设计
  15. IOM计算机组成原理,计算机组成原理设计教案.doc
  16. 【程序员情商up】说话的智慧
  17. STM32 USB组合设备HID+MIDI
  18. 上海域格LTE模块CLM920_JC3贴片SIM卡双卡切换
  19. 全国程序员高考卷曝光,你能答对几题?
  20. Python:打包配置文件 setup.py 详解

热门文章

  1. 2022-2028年中国橡胶漆产业发展动态及未来趋势预测报告
  2. RSA、MD5等加密算法的区别和应用
  3. docker 常用命令集合
  4. 残差复合正态分布的重要性
  5. LeetCode简单题之最长的美好子字符串
  6. MLIR(Multi-Level Intermediate Representation Compiler)架构 Infrastructure
  7. C++ 虚函数与存虚函数
  8. Android ScrollView 滑动指定的距离
  9. java.lang.RuntimeException: Parcelable encountered IOException writing
  10. uwsgi: invalid option -- 'x'