【MySQL】数据库排查慢查询、死锁进程排查、预防以及解决方法

MySQL数据库排查慢查询、死锁进程及解决方法

一、排查慢查询

1.1检查慢查询日志是否开启

1.1.1使用命令检查是否开启慢查询日志:
 SHOW VARIABLES LIKE 'slow_query_log';

在这里插入图片描述
如果是 Value 为 off 则并未开启

1.1.2开启并且查看慢查询日志:

MySQL提供了慢查询日志功能,可以记录所有执行时间超过long_query_time秒的查询语句,通过分析这些慢查询可以找到数据库性能瓶颈。

  1. 启用慢查询日志,在my.cnf中添加配置:
slow_query_log=1
long_query_time=1 #修改记录慢查询的阈值,默认为10s
log-slow-queries=/路径/slowquery.log #slowquery.log日志文件的路径
  1. 使用mysqldumpslow分析慢查询日志,找出真正的慢查询:
mysqldumpslow -s t /路径/slowquery.log
  1. 根据慢查询结果分析数据库索引使用情况、SQL调优空间等。

1.2 使用EXPLAIN来分析SQL语句的执行计划

主要步骤如下:

  1. 选择需要分析的SQL语句。

  2. 在SQL语句前添加EXPLAIN关键字,例如:

EXPLAIN SELECT * FROM table WHERE condition;
  1. 执行查询。EXPLAIN不会真正执行语句,只是展示其执行计划。

  2. 查看结果集。EXPLAIN查询结果将是一张表格,包含以下重要列:
    在这里插入图片描述

  • id: SELECT的步骤序列,从上到下执行。id值从上到下为访问顺序,上层依赖下层。

  • select_type: SELECT类型,如SIMPLE或PRIMARY。 简单为PRIMARY或SIMPLE查询较好,JOIN等复杂嵌套查询效率较低。

  • table:读取的数据源。

  • type:连接类型或访问类型,如ALL或RANGE。ALL类型效率最低,需要全表扫描;使用索引类型为CONST、eq_ref、ref、range效率较高。

  • possible_keys:可能使用的索引。若为空,说明SQL没有利用索引,需添加索引。

  • key:实际使用的索引。实际使用的索引名。若使用不到索引,表明优化空间大。

  • key_len:使用的索引最大长度。 索引长度短效率高,避免过长索引。

  • rows:预估需要读取的行数。数值越小性能越好,多表JOIN联合查询数值过高需优化提升性能。

  • filtered:过滤条件生效率。比率越高过滤效率越好,能有效减少数据读取量。

  1. 根据结果分析SQL访问数据的方式及性能瓶颈点,如是否利用索引、表连接方式等。从而优化SQL语句。多次查询对比验证是否效果明显。

二、检测死锁

  1. 使用show processlist命令查看当前请求,锁等待(锁类型)大于0的为死锁进程
    在这里插入图片描述
    找到对应的阻塞操作的进程id

  2. 使用kill强制结束死锁进程

 KILL <对应的id>;
  1. 分析死锁原因,修改sql或导致死锁的业务代码

三、优化建议

  1. 添加合理的索引提高查询效率

  2. 使用explain分析查询执行计划,查询是否走索引

  3. 控制事务块大小,减小锁定范围
    可以将一大批次的操作拆分为多个较小的事务,从而减小每个事务持有锁的范围,降低其他事务被锁定的可能性。

  4. 调整事务 isolation level,减少锁冲突
    可以将事务级别调整为较宽松的读已提交(READ COMMITED)或REPEATABLE READ等级。这些级别对锁的要求不如串行化等级严格,可以减少冲突。

  5. 优化sql,减少回表次数等
    如减少排序、执行多个小查询代替一个大查询、利用索引更好地检索数据等,可以降低数据库磁盘的IO操作,同时锁定的时间也会缩短。

  6. 增加硬件资源(CPU、内存等)对冲突几率更低

总体上,通过控制事务粒度、隔离级别和SQL优化,可以有效降低数据库锁冲突的可能性,提高并发处理能力。这些措施都值得尝试,看是否可以带来可观的优化空间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132365.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上证50期权开户条件有哪些呢?开户必看!

股市中&#xff0c;上证50期权确实是非常不错的交易工具&#xff0c;也是股市中最赚钱的方式&#xff0c;目前对资金门槛不够的朋友&#xff0c;可以通过分仓账户实现上证50期权开户零门槛可以及时参与上证50ETF期权交易。那么上证50期权开户条件有哪些呢?开户必看&#xff01…

three.js入门 ---- 相机控件OrbitControls

前言&#xff1a; 自用&#xff01;&#xff01;&#xff01; 文档中描述&#xff1a;OrbitControls本质上就是改变相机的参数&#xff0c;比如相机的位置属性&#xff0c;改变相机位置可以改变相机拍照场景中模型的角度&#xff0c;实现模型的360度旋转预览效果&#xff0c;改…

Python使用MySQL,无记录则插入,有记录则更新 - ON DUPLICATE KEY UPDATE

一、基本语法 ON DUPLICATE KEY UPDATE 语句基本功能是&#xff1a;当表中没有原来记录时&#xff0c;就插入&#xff0c;有的话就更新。 使用注意事项如下&#xff1a; ON DUPLICATE KEY UPDATE语句根据主键id或唯一键来判断当前插入是否已存在。记录已存在时&#xff0c;只…

膝关节检测之1设计目标手势与物体交互的动画

原来只用unity自带的IK&#xff0c;发现背部不能动&#xff0c;且手和手指的移动和旋转试了好像没法通过animation实现&#xff08;加入关键帧并修改最终状态的数值后播放没有变化&#xff0c;确定最终关键帧的数值已经改了的&#xff09;。看资料&#xff0c;发现final IK&…

『Linux』GDB调试

前言 GDB 是由 GNU 软件系统社区提供的调试工具&#xff0c;同 GCC 配套组成了一套完整的开发环境&#xff0c;GDB 是 Linux 和许多类 Unix 系统中的标准开发环境。 一般来说&#xff0c;GDB 主要完成下面四个方面的功能&#xff1a; 启动程序&#xff1a;可以按照自定义的要求…

【LeetCode力扣】75 快速排序的子过程partition(荷兰国旗问题)

目录 1、题目介绍 2、解题思路 2.1、冒泡排序暴力破解 2.2、快速排序的子过程partition 2.2.1、详细过程描述 2.2.2、代码描述 1、题目介绍 原题链接&#xff1a;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 示例 1&#xff1a; 输入&#xff1a;nums [2,0,2…

电脑出现msvcr120.dll文件缺少怎么办-缺少msvcr120.dll文件修复方法

电脑出现 msvcr120.dll 丢失的情况&#xff0c;通常是由于系统文件损坏、软件冲突、病毒感染等原因引起的。为了解决这个问题&#xff0c;这里提供了 6 种修复方法&#xff0c;以及关于 msvcr120.dll 文件的详细介绍和丢失原因。 6 种修复方法&#xff1a;第一&#xff1a;利用…

JVM面试题:(三)GC和垃圾回收算法

GC: 垃圾回收算法&#xff1a; GC最基础的算法有三种&#xff1a; 标记 -清除算法、复制算法、标记-压缩算法&#xff0c;我们常用的垃圾回收器一般 都采用分代收集算法。 标记 -清除算法&#xff0c;“标记-清除”&#xff08;Mark-Sweep&#xff09;算法&#xff0c;如它的…

SAP内部转移价格(利润中心转移价格)的条件

SAP内部转移价格&#xff08;利润中心转移价格&#xff09; SAP内部转移价格&#xff08;利润中心转移价格&#xff09; SAP内部转移价格&#xff08;利润中心转移价格&#xff09;这个听了很多人说过&#xff0c;但是利润中心转移定价需要具备什么条件。没有找到具体的文档。…

你知道多号发圈的同时并延迟评论的方式吗?

你知道多号发圈的同时并延迟评论的方式吗&#xff1f; 其实很简单。 步骤1&#xff1a;编辑好朋友圈内容 步骤2&#xff1a;设置延迟评论 步骤3&#xff1a;选择多个号发圈 通过以上3个步骤&#xff0c;就可以实现多号发圈的同时并延迟评论。 在发布朋友圈前&#xff0c;只需要…

产品经理需要掌握哪些产品专业知识?

作为产品经理&#xff0c;最重要的是洞察客户的需求、理解客户的需求、掌握客户的需求&#xff0c;所以&#xff0c;第一件事情就是要有清晰的战略方向&#xff0c;我们到底梦想是什么&#xff1f;要做什么&#xff1f;能做什么&#xff1f;在哪儿做&#xff1f;谁负责去做&…

软件工程与计算总结(七)需求文档化与验证

目录 一.文档化的原因 二.需求文档基础 1.需求文档的交流对象 2.用例文档 3.软件需求规格说明文档 三.需求文档化要点 1.技术文档协作要点 2.需求书写要点 3.软件需求规格说明文档属性要点 四.评审软件需求规格说明文档 1.需求验证与确认 2.评审需求的注意事项 五…