MySQL5.7运行CPU达百分之400处理方案
用户在使用 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';
- 具体用法详见:MySQL explain用法和结果的含义
三、show profile
- 为了进一步验证查询的时间分布,于是使用了show profile命令来查看详细的时间分布
- 首先打开配置:set profiling=on;
- 执行完查询后,使用show profiles查看query id;
- 使用show profile for query query_id查看详细信息;
- 具体使用参考资料:MySQL Sending data导致查询很慢的问题详细分析
MySQL5.7运行CPU达百分之400处理方案的更多相关文章
- mysql5.6运行一段时间之后网站页面出现乱码解决办法
mysql5.6运行一段时间之后网站页面出现乱码,怎么都打不开,经过排查之后,知道是数据库默认字符集出问题了,在此分享给大家经验. 在mysql5.6配置文件:my.ini 找到: 添加如下内容: [ ...
- TensorFlow_Faster_RCNN中demo.py的运行(CPU Only)
GitHub项目地址,https://github.com/endernewton/tf-faster-rcnnTensorflow Faster RCNN for Object Detection. ...
- Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- MYSQL5上运行多个实例
date 20131005参考http://chenzehe.iteye.com/blog/1266260官方文档 http://dev.mysql.com/doc/refman/5.1/zh/dat ...
- MySQL占用CPU超过百分之100解决过程
本文转载自: https://www.93bok.com 访问网页504 Gateway Time-out,登陆服务器查看,内存正常,CPU使用率达到了400%,因为是4核,所以到了400%,几乎全部 ...
- Linux系统发现占用CPU达100%的进程并处理
转至:https://blog.csdn.net/xinxin_2011/article/details/84936581 服务器使用的是Centos7.2 64位系统.发现服务器异常,一般先想到用t ...
- DP转LVDS方案 瑞奇达CS5211替代PS8625方案 CS5211芯片
PS8625将作为DP或eDP接收器设备出现在视频源中,并将作为LVDS显示面板的LVDS源设备.该设备是一个完全集成的解决方案,不需要外部CPU.内存.时钟基准或电压调节器.PS8625可配置为从显 ...
- docker登录运行中的容器的4方案
目前容器云非常的成熟,也有很多的使用案例,可以说不是什么高大上的东西了,可以说整个云计算也不是什么奢侈品,而是基础设施.但是如何使用,就成了必须的技术. 今天记录下,基于docker的容器登录技术. ...
- VS2010/2013 运行是很卡的加速方案
前段时间为了一个项目而把VS2008换成了VS2010,结果原本就不堪重负的本本跑起VS2010来那更是慢得没话说,于是看了遍VS2010选项,又从网上到处找资料找优化方法,总算使我的VS2010跑得 ...
随机推荐
- 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader
目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...
- feign之间传递oauth2-token的问题和解决
在微服务架构里,服务与服务之间的调用一般用feign就可以实现,它是一种可视化的rpc,并且集成了ribbon的负载均衡能力,所以很受欢迎. 授权服务 在授权服务里,用户通过用户名密码,或者手机和验证 ...
- Java多线程(2)线程锁
多线程访问同一个资源进行读写操作,就很容易出一些问题(比如我们常见的读者写者,生产者消费者模型)所以我们会选择对他们设置信号量或者加锁,来限制同一个时刻只有一个线程对某个对象进行操作. 多线程是一个蛮 ...
- DataBinding的用法
一.基本介绍 DataBinding数据绑定库是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源.这是官方给出的介绍. 那么为什么要使用DataBindi ...
- java-IO各个区别
BIO:JDK1.4以前用的都是BIO,阻塞IO. 阻塞到我们的读写方法.BIO,如果有一台服务器,能承受简单的客户端请求,那么使用io和net中的同步.阻塞式API应该是可以实现了.但是为了一个用户 ...
- FluentValidation:一个非常受欢迎的,用于构建强类型验证规则的.NET 库
1. FluentValidation:一个非常受欢迎的,用于构建强类型验证规则的.NET 库 请求参数实体定义: FluentValidation 验证类定义: 过滤器:ActionFilter中O ...
- c++ 广度优先搜索(宽搜)
c++ bfs基本应用 Knight Moves 题目描述 贝茜和她的表妹在玩一个简化版的国际象棋.棋盘如图所示: 贝茜和表妹各有一颗棋子.棋子每次移一步,且棋子只能往如图所示的八个方向移动.比赛的规 ...
- 【Spring容器】项目启动后初始化数据的两种实践方案
早期业务紧急,没有过多的在意项目的运行效率,现在回过头看走查代码,发现后端项目(Spring MVC+MyBatis)在启动过程中多次解析mybatis的xml配置文件及初始化数据,对开发阶段开发人员 ...
- 一个超级简单的Jetty实例
Maven: <!-- https://mvnrepository.com/artifact/org.mortbay.jetty/jetty --> <dependency> ...
- Spring Aware 到底是什么?
通过如下前序两篇文章: Spring Bean 生命周期之"我从哪里来"? Spring Bean 生命周期之"我要到哪里去"? 我们了解了 Spring Be ...