Mysql CPU使用率长期100%的解决思路备忘
2024-10-02 03:04:49
最近一台服务器的CPU使用率长期保持在100%的状态,查看进程发现是Mysql服务导致的。于是搜索各方资料,终于成功解决问题。备忘以及分享一下,希望可以帮助各位新手朋友。
(服务器运行环境是Windows server2008,Linux思路类似。只是命令行工具不同。)
首先通过cmd 输入 mysql -h localhost -u root -p 回车进入mysql数据库
通过 show processlist; 指令查看当前 mysql 使用频繁的 sql 语句
反复调用此命令发现经常出现多个类似的select语句
经过排查发现是where子句中的条件判断中用到的字段没有建立索引, MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。
ALTER TABLE `表名称` ADD INDEX ( `字段名称` ) ;
通过上方语句创建相关字段的索引后CPU立马下降到20%左右。成功解决问题。
小Tips:phpmyadmin中通过表结构“操作”列表中的“索引”按钮创建索引更方便处理,比较适合懒人操作,点一下鼠标即可解决 (* ̄︶ ̄)
总结:
对 WHERE, JOIN, MAX(), MIN(), ORDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。
如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。
根据 mysql 的开发文档,索引 index 用于:
,快速找出匹配一个WHERE子句的行
,当执行联结(JOIN)时,从其他表检索行。
,对特定的索引列找出MAX()或MIN()值
,如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
,在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。
最新文章
- keepalived 原主上线时vip漂移情况
- JAVA设计模式《二》
- Mysql存储过程查询结果赋值到变量的方法
- JNI字段描述符(转)
- Android中使用am命令实现在命令行启动程序详解
- Jquery效果代码--(二)
- div边框阴影的实现【转载】
- mongodb学习(1) 第一次开启 mongdb
- Integer的自动拆箱
- 云计算之路-阿里云上:docker swarm 集群再次出现故障
- javascript的数组之splice()
- 巡风配置安装 –centOS6.5
- 冒泡排序——JavaScript实现
- Reference-TMB
- go语言入门(Hello World)
- 百度api接口_知识积累
- 常用的Array相关的属性和方法
- 04 Spring的@Autowired注解、@Resource注解、@Service注解
- android studio 解析Excel数据格式导入poi-3.17.jar时的一系列报错及处理Failed resolution of: Ljavax/xml/stream/XMLEventFactory,duplicate entry: org/apache/xmlbeans/xml/stream/Location.class,GC overhead limit exceeded
- [微信小程序] 微信小程序富文本-wxParse的使用
热门文章
- laravel在wamp中输入地址后总是无法访问
- vs2015 cordova环境安装【个人遇到的几个问题】
- VMNET 工作站
- String的本质是一个char*,只是以类的形式提供,使用起来比较方便
- 芒果TV For Windows10 成长历史 &; 迭代历史 &; 新闻报道
- Win10《芒果TV》商店版更新v3.2.1:优化手机版卡顿,修复推送故障
- Win10《芒果TV》跨年邀你嗨唱,同步直播《湖南卫视2017-2018跨年演唱会》
- Delphi 编写ActiveForm窗体工程知识和样例(开发浏览器客户端应用程序)(有详细步骤)
- Angucomplete —— AngularJS 自动完成输入框
- C++ 使用回调函数的方式 和 作用。 持续更新