新闻中心

mysql中如何分析锁等待情况

2025-10-24
浏览次数:
返回列表
通过INFORMATION_SCHEMA.INNODB_LOCK_WAITS和INNODB_TRX表可定位阻塞事务,MySQL 8.0后推荐使用performance_schema.data_lock_waits分析锁等待关系,结合SHOW ENGINE INNODB STATUS查看死锁及事务状态,并启用慢查询日志记录锁等待SQL,最终通过优化事务和索引减少锁冲突。

mysql中如何分析锁等待情况

在 MySQL 中分析锁等待情况,主要依赖系统表、日志信息和性能监控工具。通过这些手段可以定位阻塞的事务、查看锁类型以及找出长时间未提交的事务。

查看当前锁等待信息

MySQL 提供了 information_schemaperformance_schema 来查看锁相关状态:

  • INFORMATION_SCHEMA.INNODB_LOCKS:显示当前持有的锁(已废弃,在 MySQL 8.0 中移除)
  • INFORMATION_SCHEMA.INNODB_LOCK_WAITS:展示哪些事务在等待锁
  • performance_schema.data_lock_waits:MySQL 8.0 推荐方式,记录数据锁等待

在 MySQL 5.7 及以下版本中,可通过以下语句查看锁等待:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

该结果包含两个关键字段:requesting_trx_id(等待方)和 blocking_trx_id(阻塞方)。

结合 INNODB_TRX 表可进一步查出具体事务信息:

SELECT 
  trx_id, 
  trx_state, 
  trx_started, 
  trx_mysql_thread_id, 
  trx_query 
FROM INFORMATION_SCHEMA.INNODB_TRX 
WHERE trx_id IN (
  SELECT blocking_trx_id FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS
);

这能帮你找到是哪个 SQL 长时间持有锁未释放。

使用 performance_schema 分析(MySQL 8.0+)

MySQL 8.0 后推荐使用 performance_schema 查看更详细的锁信息:

SELECT 
  OBJECT_NAME,
  LOCK_TYPE,
  LOCK_MODE,
  OWNER_THREAD_ID,
  OWNER_EVENT_ID
FROM performance_schema.data_locks
WHERE OBJECT_SCHEMA = 'your_db_name';

配合 data_lock_waits 找出阻塞关系:

MarsCode MarsCode

字节跳动旗下的免费AI编程工具

MarsCode 339 查看详情 MarsCode
SELECT 
  r.OBJECT_NAME,
  r.LOCK_MODE AS requested_mode,
  b.LOCK_MODE AS blocking_mode,
  r.OWNER_THREAD_ID AS waiting_thread,
  b.OWNER_THREAD_ID AS blocking_thread
FROM performance_schema.data_lock_waits w
JOIN performance_schema.data_locks r ON w.REQUESTING_ENGINE_LOCK_ID = r.ENGINE_LOCK_ID
JOIN performance_schema.data_locks b ON w.BLOCKING_ENGINE_LOCK_ID = b.ENGINE_LOCK_ID;

启用 InnoDB 状态监控

执行以下命令输出 InnoDB 引擎的详细状态,其中包含最近的死锁和锁等待信息:

SHOW ENGINE INNODB STATUS\G

重点关注输出中的以下几个部分:

  • TRANSACTIONS:列出当前运行的事务,包括开始时间、状态和正在执行的 SQL
  • LOCK WAIT:如果有锁等待,会显示具体哪个事务被阻塞
  • LATEST DETECTED DEADLOCK:最近一次死锁的详细过程,对排查非常有用

开启锁等待超时与日志记录

设置合理的锁等待超时时间有助于避免长时间阻塞:

SET SESSION innodb_lock_wait_timeout = 10; -- 默认 50 秒

同时建议开启慢查询日志并记录锁等待的 SQL:

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;
SET GLOBAL log_queries_not_using_indexes = ON;
SET GLOBAL log_throttle_queries_not_using_indexes = 10;

在配置文件中加入:

slow-query-log=ON  
long_query_time=1  
log-output=FILE  

这样可以通过慢日志发现执行时间长或因锁等待而变慢的语句。

基本上就这些。关键是结合 INNODB_TRXdata_lock_waitsSHOW ENGINE INNODB STATUS 快速定位阻塞源头,再通过优化事务粒度、减少长事务、合理加索引等方式降低锁冲突。

以上就是mysql中如何分析锁等待情况的详细内容,更多请关注其它相关文章!


# 全攻略  # 上城区网络推广营销价格  # 轻易贷seo  # 武汉seo  # 鄂州网站优化推广报价  # 旅游产品营销推广方式  # 推广使用营销  # 服务型网站推广策划方案  # 黑龙江网站优化托管服务  # 企业网站推广是什么  # 长治php网站建设流程  # 几个  # 操作步骤  # mysql  # 推荐使用  # 多个  # 长时间  # 镜像  # 离线  # 死锁  # 有锁  # 配置文件  # ai  # session  # 工具 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: QQ邮箱稳定登录入口_QQ邮箱官方网站网页版使用  押井守高度称赞《辐射4》:玩了八年都停不下来!  微信客户端如何收红包_微信客户端接收红包使用教程  poki免费入口快捷访问 poki人气小游戏直接玩站点  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  CSS实现侧边栏导航项全宽圆角悬停背景效果  React Router 嵌套组件中 URL 重定向问题的解决方案  PHP 枚举:根据字符串获取枚举案例的策略与实现  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  韩剧圈正版入口页面_韩剧圈官网登录链接  LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  精准捕获:如何在页面中监听除特定元素外的所有点击事件  sublime怎么格式化代码_sublime代码美化与一键排版插件配置  css链接悬停下划线样式如何自定义_使用::after结合content和transition  Lar*el头像管理:图片缩放与旧文件删除的最佳实践  win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  探索高级语言到C/C++的转译路径:以Go为例及内存管理策略  c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架  网易大神怎么保存别人动态的图片_网易大神动态图片保存方法  高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法  必由学官网快捷入口 必由学网页版在线学习平台  整合Supabase认证与Django模型:跨模式迁移的解决方案  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  《马克思佩恩3》早期版本曝光 UI设计曾多次调整!  58动漫网在线官方网 58动漫网正版动漫入口网址  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  QQ邮箱网页版入口登录 QQ邮箱在线邮箱官方通道  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明  谷歌学术网站直达地址 谷歌学术搜索网页版一键进入  在命令行怎么运行html项目_命令行运行html项目方法【教程】  J*aScript动态修改指定div内所有a标签样式指南  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  Win10怎么制作U盘启动盘 Win10系统安装U盘制作教程【详解】  J*aScript中针对特定容器内图片动画的实现教程  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  Lar*el Excel导入时生成自定义递增ID的策略与实践  漫蛙2(台版)官方入口地址 漫蛙2(台版)正版漫画网页端  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  印象笔记如何设提醒任务防漏执行_印象笔记设提醒任务防漏执行【任务提醒】 

搜索