读书心得

 电话:178-9807-8618

 微信: lib99net QQ:24661067

mysql占用CPU超过100%解决过程

  • 网络资讯
  • 编辑:nanost
  • 时间:2022-02-27 15:09
  • 阅读:215

2017年12月2日上午,将学校新闻网2015年之前的45000多条记录迁移到了新网站的mysql数据库,新网站上有2015年1月1日之后的9000多条记录,数据量一下子增加了5倍。

2017年12月3日晚上9点多,有领导和老师反映新闻网无法访问,立即登录服务器进行排查。


一、使用top命令看到的情况如下:

20171204094729487.jpg

可以看到服务器负载很高,,mysql CPU使用已达到接近400%(因为是四核,所以会有超过100%的情况)。


二、在服务器上执行mysql -u root -p之后,输入show full processlist; 可以看到正在执行的语句。

20171204094808774.jpg

可以看到是下面的SQL语句执行耗费了较长时间。

SELECT id,title,most_top,view_count,posttime FROM article 

where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  

order by most_top desc,posttime desc limit 0,8

但是从数据库设计方面来说,该做的索引都已经做了,SQL语句似乎没有优化的空间。

直接执行此条SQL,发现速度很慢,需要1-6秒的时间(跟mysql正在并发执行的查询有关,如果没有并发的,需要1秒多)。如果把排序依据改为一个,则查询时间可以缩短至0.01秒(most_top)或者0.001秒(posttime)。


三、修改mysql配置文件中的pool/buffer等数值,重启mysql都没有作用。


四、通过EXPLAIN分析SQL语句

EXPLAIN SELECT id,title,most_top,view_count,posttime FROM article 

where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  

order by most_top desc,posttime desc limit 0,8

20171204094825899.png

可以看到,主select对27928条记录使用filesort进行了排序,这是造成查询速度慢的原因。然后8个并发的查询使CPU专用很高。


五、优化

首先是缩减查询范围

SELECT id,title,most_top,view_count,posttime FROM article 

where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  and DATEDIFF(NOW(),posttime)<=90

order by most_top desc,posttime desc limit 0,8

发现有一定效果,但效果不明显,原因是每条记录都要做一次DATEDIFF运算。后改为

SELECT id,title,most_top,view_count,posttime FROM article 

where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  and postime>='2017-09-05'

order by most_top desc,posttime desc limit 0,8

查询速度大幅提高。在PHP中,日期阈值通过计算得到

$d = date("Y-m-d", strtotime('-90 day'));

$sql = "

SELECT id,title,most_top,view_count,posttime FROM article 

where status=3 AND catalog_id in (select catalog_id from catalog where catalog_id=17 or parent_id=17)  and postime>='$d'

order by most_top desc,posttime desc limit 0,8

"


六、效果

查询时间大幅度缩短,CPU负载很轻

20171204095653605.jpg


20171204095701226.png

————————————————

版权声明:本文为CSDN博主「jimshen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jimshen/article/details/78706538


全部评论(0)
推荐阅读
  • 记录一次MySQL CPU持续100%解决历程
  • 记录一次MySQL CPU持续100%解决历程
  • 记录一次MySQLCPU持续100%解决历程 2021年3月1日16:01:52 发表评论 3,155℃环境:服务器:腾讯云2H4G数据库:腾讯云TDSQL-CMySQL1H1G前段时间对某个网站进行了改版,然后某天发现网站内页访问有时候会等待很久,阿汤博客就分享一下解决这一问题的历程。首先登录监控查看服务器各项指标都正常,然后怀疑是数据库的问题,登录数据库管理平台,实时查看各项指标都比较正常,但是
  • 网络资讯
  • 来源:csdn
  • 编辑:nanost
  • 时间:2023-02-05 19:53
  • 阅读:183
  • 如何查找MySQL中查询慢的SQL语句
  • 如何查找MySQL中查询慢的SQL语句
  • 如何查找MySQL中查询慢的SQL语句更多如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL语句,用--log-slow-queries[=file_name]选项启动时,mysqld会写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL。下面介绍MySQL中如何查询慢的SQL语句一、M
  • 网络资讯
  • 来源:csdn
  • 编辑:nanost
  • 时间:2023-02-05 18:58
  • 阅读:204
  • 轻松高速下载国外网盘资源
  • 轻松高速下载国外网盘资源
  • 轻松高速下载国外网盘资源(如UsersCloud、ClickUpload、Turbobit、Nitroflare、Rapidgator、Uploaded)阿虚同学于2021-07-1010:51:19发布19677 收藏13版权之前在《Mac端软件下载站》这篇文章中有提到:一些网站是采用的国外收费网盘,比如:UsersCloud、ClickUpload、Turbobit、Nitroflare、Rapidgator、Up
  • 网络资讯
  • 来源:csdn
  • 编辑:nanost
  • 时间:2022-10-03 22:47
  • 阅读:634
  • 【良哥运维干货】Liunx面板如何设置能充分利用服务器性能
  • 【良哥运维干货】Liunx面板如何设置能充分利用服务器性能
  • 在创建站点之前,我们需要根据自己的条件进行一些配置,这可以让以后的站点运行更稳定!前期准备:安装宝塔Linux面板4.2.x,安装Linux工具箱,安装LNMP或LAMP环境具体优化设置步骤1、添加计划任务,定期释放内存,建议设置每天释放一次,执行时机为半夜,如:3:302、打开Linux工具箱添加SwapSwap推荐值:物理内存      Swap512M 
  • 网络资讯
  • 来源:bt.cn
  • 编辑:nanost
  • 时间:2022-03-06 14:57
  • 阅读:123
  • mysql占用CPU超过100%解决过程
  • mysql占用CPU超过100%解决过程
  • 2017年12月2日上午,将学校新闻网2015年之前的45000多条记录迁移到了新网站的mysql数据库,新网站上有2015年1月1日之后的9000多条记录,数据量一下子增加了5倍。2017年12月3日晚上9点多,有领导和老师反映新闻网无法访问,立即登录服务器进行排查。一、使用top命令看到的情况如下:可以看到服务器负载很高,,mysqlCPU使用已达到接近400%(因为是四核,所以会有超过100%的情况)。二、在服务器上执行mysq
  • 网络资讯
  • 编辑:nanost
  • 时间:2022-02-27 15:09
  • 阅读:216
网站首页 | 关于我们 | 广告合作 | 联系我们 | 隐私条款 | 免责声明 | 网站地图
CopyRight 2014-2024 读书心得 | 津ICP备17010199号-2
[s***r 阅读了 [FOX-Ebook]The Definitive Guide to Mod... 书币:¥39.99 [已发货]
[s***r 阅读了 [FOX-Ebook]Learn JavaFX Game and App D... 书币:¥39.99 [已发货]
[1***9 阅读了 [PDF]Art History, Volume 1, 6th Editio... 书币:¥80 [交易成功]
[1***1 阅读了 Advanced Tactical and Strategic Missil... 书币:¥29.99 [已发货]
[1***4 阅读了 [AME]BIOS Instant Notes in Molecular B... 书币:¥10 [交易成功]
[s***r 阅读了 [FOX-Ebook]Learn JavaFX 17: Building U... 书币:¥39.99 [交易成功]