Mysql CPU使用率长期100%的解决思路备忘

最近一台服务器的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 用于:

1,快速找出匹配一个WHERE子句的行
2,当执行联结(JOIN)时,从其他表检索行。
3,对特定的索引列找出MAX()或MIN()值
4,如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
5,在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。  

原文地址:https://www.cnblogs.com/aieceo/p/9130084.html

时间: 2024-07-30 19:44:53

Mysql CPU使用率长期100%的解决思路备忘的相关文章

(译)用win7自带工具找出svchost.exe的CPU使用率达到100%的元凶

本文是我对自己上一篇转载的博客 <Figuring out why my SVCHOST.EXE is at 100% CPU without complicated tools in Windows 7> 的翻译.本人翻译的原则是力求通顺自然,因此很多地方并没有严格按照原文的词句来,而是争取用更符合我们语言习惯的方式表达类似的意思. =====================================华丽的分割线=================================== S

[转]git使用问题-解决方法 备忘

1-- clone分支,修改文件本地commit后, push回原分支失败,报错: git push   [email protected]'s password:   Counting objects: 21, done.  Compressing objects: 100% (11/11), done.  Writing objects: 100% (11/11), 1010 bytes, done.  Total 11 (delta 9), reused 0 (delta 0)  erro

关于 vmware虚拟机的一些问题及解决办法备忘

有问题讨论 --- 问题:关于vm虚拟机窗口大小全屏按钮无法全屏 解决:安装vm-tools,重启即可 --- 问题:关于vm虚拟机安装xp,尤其还原ghost出错找不到光驱 解决:进入镜像pe安装 --- 问题:关于vm的3d显卡加速问题 解决:编辑vmds文件 ---

AR9331出现connect-debounce failed,port 1 disabled解决方法备忘

基于AR9331的路由器,自己画的pcb板子,竟然出现这个错误,百度下,貌似有不少人遇见过这个错误,但是在修改板子前我的固件用的是没问题的,USB完美使用 修改过板子后出现这个问题! hub 1-0:1.0 connect-debounce failed,port 1 disabled 后台串口不停的报这个错误. 最后发现是USB的数据线反了,哈哈,跳线反过来试试! 成功识别U盘没问题了! 备忘一下!

百度云BCC的CPU使用率100%

这个就是传说中的用别人电脑挖矿吗?还会改自动改你的密码. 先手动删除了计划任务里的文件夹,清空了crontab,CPU使用率降下来了. 正文 国庆第4天,突然发现百度云BCC的CPU使用率达到100%. 重要的是,root密码还tnnd被改动了.原来的VNC连接还在,但是新登陆的终端都连不上了,提示密码错误. 重启,通过主页使用手机修改密码之后,还显示CPU使用率达到100%. Top了一下,发现cron一直100%. crontab -l了一下 先来看看计划任务都干啥了: 第一条 每3天运行脚

查看线程linux cpu使用率

Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算 转 http://www.cnblogs.com/lidabo/p/4738113.html目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidstat文件 procpidtasktidstat文件 系统中有关进程cpu使用率的常用命令 ps 命令 top命令 单核情况下Cpu使用率的计算 基本思想 总的Cpu使用率计算 计算方法 某一进程Cpu使用率的计算 计算方法 实验数据

cpu使用率的计算

proc文件系统 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为内核与进程提供通信的接口.用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的. /proc目录中有一些以数字命名的目录,它们是进程目录.系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,

【研究任务】精准控制进程cpu使用率

一.cpu的使用率计算 cpu的使用率的获取可以通过top命令或者/proc/<pid>/stat文件 以下是计算cpu使用率有关的参数: pid=17184 进程号 utime=45010 该任务在用户态运行的时间,单位为jiffies stime=4050 该任务在核心态运行的时间,单位为jiffies cutime=0 所有已死线程在用户态运行的时间,单位为jiffies cstime=0 所有已死在核心态运行的时间,单位为jiffies #参考python包psutil源码 def c

Linux性能优化实战:负载均衡与CPU使用率(01)

一.CPU使用率并没有直接关系 1.平均负载 单位时间内,系统处于可运行状态和不可终端状态的平均进程数也就是平均活跃进程数,它和cpu使用率并没有直接关系, 可运行状态: 正在使用的cpu或者正在等待cpu的进程 不可中断状态 进程是正处于内核关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备I/O响应,也就是我们在ps命令中看到的D状态的状态 或者中断打断的 ,这个时候的 进程处于不可终端状态,如果此时的进程被打断了 ,就容易出现磁盘数据与进程不一致的 问题 所以,不可中断