当前位置: 首页 > news >正文

Linux上MySql CPU 占用异常

早上用户反馈系统很卡,一直转圈圈,然后去复现一下,确实存在。然后马上去服务器上一看,cpu跑满,太夸张了,之前也没有出现过这样的情况。

首先  进入服务器后,使用命令:top -c,查看系统资源使用情况。

直接爆满了,这不卡死才怪。

mysql跑满还是第一次,心想前面也没有更新过服务,怎么今天突然卡住了,还以为是哪块代码有问题,直接重启服务了(大家不要学我),发现没有用。

去mysql里面找问题所在:

  1. 使用 mysql -uroot -p 然后再输入密码,进入mysql服务
  2. 使用:show processlist;查看MySQL实时线程状态发现大量重复SQL以及阻塞线程StateLockedSending dataSorting result),并且Time时间长达几时秒
  3. 马上去找代码和完整sql,本地运行也很慢,首先想到的优化sql本身,有效果但不明显。后想起来索引有没有生效,使用 EXPLAIN (放在sql前面)发现也是生效的。不过,又发现检索的行数据异常
  • 索引确实生效,但访问类型为 ref,表示使用了非唯一索引扫描,扫描行数高达 580,564 行(rows 列),过滤后仅保留 2.42% 的数据(约 14,000 行),Using where 表示索引未能完全覆盖查询,需要回表检查数据。
  • 针对该sql,考虑使用复合索引,能够覆盖查询中的三个条件:del_flag=0executor_status IN (1,2)(NOW() >= execute_time OR execute_time IS NULL),减少回表操作(从 580k 行 → 直接定位有效数据)实测从之前的4-5秒,缩短至0.几秒。
  • 若之前该字段有索引,可以将其删除(不删除也行),然后添加复合索引:
  • ALTER TABLE tb_task_adv 
  • DROP INDEX del_flag
  • ADD INDEX idx_adv_core (del_flag, executor_status, execute_time);

最后,不要觉得索引好用添加过多索引,索引太多,添加数据的时候会多耗时间的。

http://www.lryc.cn/news/613455.html

相关文章:

  • SpringBoot中的单例注入方式
  • windows有一个企业微信安装包,脚本执行并安装到d盘。
  • VSCode ssh一直在Setting up SSH Host xxx: Copying VS Code Server to host with scp等待
  • 开发避坑指南(20) :MyBatis操作Oracle插入NULL值异常“无效列类型1111“解决方案
  • DrissionPage实战案例:小红书旅游数据爬取
  • TDengine IDMP 文档介绍
  • 腾讯位置服务 —— 预估订单路线金额(使用Drools规则引擎处理)
  • 机器学习在量化中的应用:如何从逻辑回归到XGBoost实现高效预测?
  • [Oracle] DECODE()函数
  • DBeaver 25.1.0 转储数据库失败解决方案(适配最新版界面)
  • [Oracle] GREATEST()函数
  • 数据库入门:从零开始构建你的第一个数据库
  • 一个基于固定 IP地址查询天气的 C 语言程序,通过调用第三方天气 API:
  • Oracle 关闭 impdp任务
  • Oracle 12c + Pl/Sql windows系统下表空间创建、迁移,dmp备份导入,数据库字符集更改
  • 图论(1):图数据结构
  • 攻防世界WEB(新手模式)2-2-upload1
  • 【YOLO学习笔记】YOLOv8详解解读
  • 工业相机使用 YOLOv8深度学习模型 及 OpenCV 实现目标检测简单介绍
  • Moses工具的配置和小语种平行语料训练SMT完整实现
  • 商城小程序怎么做?如何开发母婴用品商城小程序?
  • 前端三大核心要素以及前后端通讯
  • mysql_mcp_server_pro源码部署及启动报错新手指南:让智能体长出手来直接获取到最底层的数据
  • Linux ISCSI服务配置
  • 聚集索引VS非聚集索引:核心差异详解
  • 将Excel数据导入SQL Server数据库,并更新源表数据
  • 安卓Handler和Looper的学习记录
  • ArkTS: McPointChart
  • Debian系统 为账号添加sudo权限
  • 远程制作《最后生还者》中的Xsens动作捕捉技术