MYSQL占用CPU问题

那天我正在修电脑,朋友说他的笔记本电脑突然变得很卡,打开网页要等很长时间。
我过去一看,果然任务管理器的CPU使用率超过了9 0%,还有一个未知的程序卡住了。
我结束程序并删除它,CPU立即下降到2 0%。
我朋友说好多了。
我还记得我曾经有一个同事,他的电脑CPU一直很高。
查了半天,说是后台有杀毒软件扫描。
我一关闭扫描,CPU就立即恢复正常。
等等,还有一件事。
我老家奶奶的电视有时会突然死机。
后来发现电视盒子正在后台更新。
我改了设置,等他看电视了才更新,就没事了。
电脑这个东西有时候真的很奇怪。

mysql sql cpu占用高查询解决

老实说,解决 MySQL CPU 激增的问题有三个步骤:首先查看谁在运行,然后查看是否运行缓慢,最后进行调整。

我们先来说说最重要的事情。
使用系统监控工具直接确定位置是关键。
去年我们在运行这个高并发项目的时候,当CPU达到9 0%的时候,我们发现某个存储过程中的重复查询没有退出条件。
htop直接关闭CPU核心,实在是太可怕了。
还有一点,显示进程列表尤为重要。
记得添加一个超时参数,例如show list ofprocesss where time > 1 00;。
去年运行一个项目时,我遇到了一个 JOIN 条件错误的查询,运行了大约 5 分钟。
我用这个命令3 秒就找到了。
还有一个非常重要的细节。
监控时,不仅要查看MySQL进程,还要查看整个系统的负载。
例如,在 Linux 中,使用 vmstat 1 1 0 每秒查看 1 0 个样本。
去年有一个项目,CPU激增是由于磁盘I/O滞后,导致MySQL等待时间增加,CPU变成了假象。

我一开始以为优化SQL就是增加索引,后来发现这是一个错误。
去年,我改进了电商订单表中的一个查询,将IN子查询改为JOIN。
查询时间直接从2 秒减少到0.3 秒,CPU占用率也降低了一半。
说实话,这很令人沮丧。
有时添加更多索引会使速度变慢。
例如,如果给定项目添加3 0个索引,则写入过程将减慢5 0%,因此优化时必须解决主要的不一致问题。

设置配置参数时,不能盲目设置innodb_buffer_pool_size。
应根据内存和业务规模进行调整。
去年有一个项目直接把buffer扩容到5 0GB,但是在并发高峰的时候还是崩溃了。
后来发现写放大太严重,所以将该值降低到3 0GB。
等等,还有别的事。
线程池参数在5 .7 版本之后才可用。
如果您使用的是 5 .6 版本,则需要查看 max_connections 和 thread_cache_size。

我认为尝试独立于数据库的服务(例如诊断)会很有用用于 DAS 的 SQL。
去年,我审阅了我兄弟单位的慢查询。
系统直接提示我们更改特定函数以使用视图。
这样做之后,CPU 下降了 7 0%,这比我们自己更换要容易得多。