Mysql并发DML锁等待的优化

发布时间:2026/10/6 1:03:38

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中修改id1的数据不提交如下图。在这个会话中修改Id1的记录由于没有索引使用的是全部扫描的方式检索数据事务结束前会锁定整表数据而不是只锁定Id1的1条数据。#会话1 start transaction; update tb_test_lock1 set c1a1 where id1;与此同时在会话2中修改id5的数据可以看到因为会话1锁定了整表数据修改id5的sql被阻塞在超时后触发报错。#会话2 update tb_test_lock1 set c1e5 where id5;场景2创建索引缩小锁范围合适的索引能够缩小锁的范围减少并发锁冲突create index idx_id on tb_test_lock1(id);在会话1中修改id1的数据不提交如下图。#会话1 start transaction; update tb_test_lock1 set c1a1 where id1;与此同时在会话2中修改id5的数据如下图。我们看到会话2执行成功了这表明会话1并没有阻塞会话2。这是因为我们创建了索引idx_id会话1按索引idx_id检索数据数据上锁的范围变小了只锁定Id1的记录。而会话2请求的是Id5的记录锁2者不冲突。#会话2 update tb_test_lock1 set c1e5 where id5;实验表明创建合适的索引并使用索引字段做检索条件可以有效解决并发会话阻塞问题避免锁等待报错。​DLM 2026.7.21

相关新闻

国内首批!中关村科金通过中国信通院生成式引擎优化能力完备性专项测评

国内首批!中关村科金通过中国信通院生成式引擎优化能力完备性专项测评

2026/10/5 11:57:29

2026年7月10日,中国信息通信研究院在北京举办“GEO价值交付与场景应用创新研讨会”,正式发布国内首批生成式引擎优化(GEO)能力完备性专项测评结果。凭借领先的AI原生技术能力、完善的安全合规体系及成熟的得助GEO产品能力&#xf…

劲浪ES165KE黄盆两分频怎么搭配功放?弗莱德FH-4与欧迪臣SR 4.500参数对比

劲浪ES165KE黄盆两分频怎么搭配功放?弗莱德FH-4与欧迪臣SR 4.500参数对比

2026/10/1 14:38:00

在汽车音响升级中,扬声器和功放之间的关系不能只看额定功率。以劲浪 FOCAL ES165KE 黄盆中低音为例,它的阻抗、额定功率、灵敏度和安装条件,都会影响功放的选择。本文把弗莱德 FREUDE FH-4与欧迪臣 AUDISON SR 4.500放在同一组参数里比较&…

mm学习笔记_06:缺页异常处理

mm学习笔记_06:缺页异常处理

2026/10/5 14:25:22

mm学习笔记_06:缺页异常处理基于 ReactOS ARM3 MM 源码(ntoskrnl/mm/ARM3/pagfault.c)1. pagfault.c 概述 文件位置:d:\reactos\ntoskrnl\mm\ARM3\pagfault.c 职责:处理所有类型的缺页异常(Page Fault&…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/10/5 14:25:36

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/10/5 16:54:26

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/10/5 11:17:40

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/10/5 21:04:58

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/10/5 15:05:44

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/10/5 15:05:44

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…