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

Mysql并发DML锁等待的优化

1、概述

​ 在Mysql数据库中,慢SQL、长事务、没执行commit的DML操作,都有可能导致并发会话的阻塞,还可能发生锁等待报错。那么这一类的报错应该如何优化呢?

通常有三种方案可以考虑:

1)优化SQL性能,SQL执行快了,阻塞时间自然就短了;

2)使用合适的索引,缩小数据上锁范围;

3)调高锁等待超时时间参数。

本文主要介绍第2种方案,下面我们来看看实验效果

2、实验

场景1:不使用索引

在没有索引和主键的表上做update和delete操作,锁定的是表中所有数据,无论sql中是否含有过滤条件。

先准备测试数据

create table tb_test_lock1(id int ,c1 varchar(10)); insert into tb_test_lock1 values(1,'aaa'); insert into tb_test_lock1 values(2,'bbb'); insert into tb_test_lock1 values(3,'ccc'); insert into tb_test_lock1 values(4,'ddd'); insert into tb_test_lock1 values(5,'eee'); commit;

在会话1中修改id=1的数据,不提交,如下图。

在这个会话中,修改Id=1的记录,由于没有索引,使用的是全部扫描的方式检索数据,事务结束前会锁定整表数据,而不是只锁定Id=1的1条数据。

#会话1 start transaction; update tb_test_lock1 set c1='a1' where id=1;

与此同时,在会话2中修改id=5的数据,可以看到,因为会话1锁定了整表数据,修改id=5的sql被阻塞,在超时后触发报错。

#会话2 update tb_test_lock1 set c1='e5' where id=5;

场景2:创建索引,缩小锁范围

合适的索引,能够缩小锁的范围,减少并发锁冲突

create index idx_id on tb_test_lock1(id);

在会话1中修改id=1的数据,不提交,如下图。

#会话1 start transaction; update tb_test_lock1 set c1='a1' where id=1;

与此同时,在会话2中修改id=5的数据,如下图。我们看到会话2执行成功了,这表明,会话1并没有阻塞会话2。这是因为我们创建了索引idx_id,会话1按索引idx_id检索数据,数据上锁的范围变小了,只锁定Id=1的记录。而会话2请求的是Id=5的记录锁,2者不冲突。

#会话2 update tb_test_lock1 set c1='e5' where id=5;

实验表明,创建合适的索引,并使用索引字段做检索条件,可以有效解决并发会话阻塞问题,避免锁等待报错。

DLM 2026.7.21

http://www.jsqmd.com/news/1244038/

相关文章:

  • 2026 版五升六数学暑假计算大通关|人教版同步衔接 练习打卡检测一套配齐
  • 替代TPS65130双路输出±15V/500mA电流直流转直流转换器(TFT-LCD偏置电源)
  • 100个Rust练习终极指南:从零开始掌握系统编程的完整教程
  • 惠州除甲醛公司实地走访测评:从资质到售后全维度拆解 - 环保除醛知识库
  • ConvertOneNote2MarkDown常见错误解决指南:让转换过程零障碍
  • Windows 下 Nginx + Flask 应用迁移阿里云完整部署指南(附安全加固)
  • 外文翻译平台哪个好?2026年小语种人工翻译平台首选推荐 - 逢君学术-AI论文写作
  • TypeScript 7 正式发布!Vue 暂被 “拒之门外“ !!!
  • AI 致存储成本攀升,NAS 还值得买吗?群晖 DS225+ 或成折中之选
  • 考SCMP证书的完整步骤是什么 - 众智商学院官方
  • 手机号查询QQ号终极指南:3分钟掌握高效查询的完整解决方案
  • 零基础玩转bWAPP靶场(十三):SQL 注入(GET/搜索型)
  • 【2026-07】威海环翠区全屋设计不错的服务电话挑哪个?整装设计、效果图设计甄选——合度装饰 - 多才菠萝
  • 欧米茄官方保养价格查询|服务热线及门店地址权威信息公告(2026年7月最新) - 欧米茄官方服务中心
  • 不止迎宾:政务服务AI数字人的7×24小时
  • WebRTC M80:VP9 多层(SVC:联播)崩溃问题定位与修复建议
  • 如何将iPad备份到外置硬盘(4种经过验证的方法)
  • 深圳设备搬运公司坪山区:医疗设备搬运+手术室搬迁合作案例,专业团队资质要求 - szxybj
  • 养生零食品牌推荐:衡身堂轻养佳味 - 晴光转树
  • 数字孪生+智能管控架构:越华环保工业环保装备技术落地解析
  • 3分钟学会:用免费开源工具拯救你损坏的MP4视频文件
  • 2026 年新消息:洞头口碑好的专业的液压钢坝企业哪家强,拆穿传统坝体,液压钢坝如何颠覆工程成本?-秦奋水利机械 - 行业推荐官【认证】
  • 自研实现APK加固-代码资源so全加密隐藏(附免费处理工具)
  • 【单片机毕业设计推荐】基于 STM32 的水质水温监测与声光报警系统设计,基于 STM32 的水体多参数实时检测装置开发(011003)
  • LZHAM Codec完全指南:如何实现比LZMA快8倍的无损数据压缩与解压
  • 2026年7月欧米茄温州官方客户服务热线及售后网点地址最新指引 - 欧米茄服务中心
  • 上门取件怎么选快递公司?揭秘5折寄件真相,避开隐形消费陷阱 - 快递物流资讯
  • 上海亨得利名表维修保养地址与售后服务中心权威公示(2026年7月最新) - 亨得利官方
  • 【RT-DETR涨点改进】CVPR 2026 | 独家Conv与频域改进篇| 引入SSFModule选择性空间频率模块,助力无人机航拍、遥感影像小目标检测、实例分割、目标跟踪任务,有效涨点
  • 怎么把视频口播转成文字稿?2026免费语音转写教程 - 工具测试专家