新闻详情

新闻详情

首页 / 资讯中心 / 详情

MySQL数据库中事务并发问题以及隔离级别

发布时间:2026/10/2 20:51:29来源:尧图网络
MySQL数据库中事务并发问题以及隔离级别
1.脏读定义一个事务读到了另一个事务尚未提交的数据。- 场景T2 更新数据但未提交T1 读取到 T2 未提交的修改若 T2 回滚T1 读到的数据无效- 本质读取到临时、可能回滚的无效数据- 隔离级别Read Uncommitted读未提交会出现RC、RR、Serializable 可以解决脏读2.不可重复读定义同一个事务内前后两次读取同一行记录中间别的事务对这一行做了 update 并且提交导致这个事务两次读到的值不一样。- 场景T1先读一行T2更新这一行、提交T1再读同一行数据变了- 本质行还在字段内容被修改- 隔离级别RC读已提交会出现RR可重复读可以解决不可重复读2. 幻读定义事务查询一个范围的数据另一个事务在这个范围 insert 插入新行并提交原事务再次执行相同范围查询多出来一条记录像幻觉。- 场景T1查询 where id10 得到3条T2插入一条id12并提交T1再次查询查到4条- 本质查询范围内行数增加/减少新增或删除行- MySQL InnoDBRR的快照读看不到新增行不会幻读但当前读select ... for update会读到新插入的数据存在幻读SERIALIZABLE串行化才能彻底杜绝幻读。3. 4个隔离级别从低到高右边截图1. READ UNCOMMITTED 读未提交能读到别的事务没提交的数据。脏读、不可重复读、幻读全都存在。2. READ COMMITTED 读已提交RC只能读到已经提交的数据。解决脏读不可重复读、幻读仍然存在。3. REPEATABLE READ 可重复读RRMySQL默认同一个事务多次读同一个字段结果不变。解决脏读、不可重复读不能完全避免幻读。为什么可重复读可以避免不可重复读不能完全避免幻读事务开始时生成一个事务快照。后续本事务所有普通select快照读只读取这个快照版本的数据不会读取其他事务已经提交的最新版本。别的事务修改已有行哪怕提交了当前事务快照读看不到所以不会发生不可重复读。幻读是插入新的纪录MVCC快照只解决快照读场景但油两个关键点快照读普通select不会看到其他事务新插入的数据快照读层面没有幻读。当前读select ... for update/update/delete/insert是读取最新数据会加锁InnDB的RP用记录锁间隙锁防止别的事务插入但是间隙锁不能覆盖所有场景存在漏洞。举经典例子面试最常考表 tid 主键现有数据(1),(5)事务 ARRbegin; select * from t where id1 and id5 for update; -- 当前读加锁 -- 锁定区间 (1,5)这个间隙阻止其他事务插入id2、3、4间隙锁锁住索引间隙不让别的事务在间隙里 insert防止幻读。 但是间隙锁只锁已经存在索引之间的空隙有例外场景。漏洞场景查询的范围超过已有最大索引表只有 (1,5) 事务 Abegin; select * from t where id10 for update;现在表里没有任何 id10 的数据没有索引间隙可以加间隙锁。 事务 B 就可以执行insert t values(12); commit;事务 A 再执行这条select ... for update就能读到 id12 这条新数据 →幻读出现间隙锁只能锁住现有索引之间的空隙如果查询区间在所有记录之外没有间隙可以锁其他事务依然可以插入新数据产生幻读。4. SERIALIZABLE 串行化最高级别所有读写加锁事务串行执行。脏读、不可重复读、幻读全部解决但是性能最差。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

10分钟搞定 claude-desktop-buddy:M5StickC Plus 固件烧录与 BLE 配对快速入门 2026/10/2 21:36:35

10分钟搞定 claude-desktop-buddy:M5StickC Plus 固件烧录与 BLE 配对快速入门

10分钟搞定 claude-desktop-buddy:M5StickC Plus 固件烧录与 BLE 配对快速入门 【免费下载链接】claude-desktop-buddy Reference and an example for the Bluetooth API for makers in Claude Cowork & Claude Code Desktop 项目地址: https://gitcode.com/g…

阅读更多 →
Figma-Context-MCP 路线图深度解析:从组件提取到企业级变量系统的演进规划 2026/10/2 21:36:07

Figma-Context-MCP 路线图深度解析:从组件提取到企业级变量系统的演进规划

AI 应用MCP 服务 【免费下载链接】Figma-Context-MCP MCP server to provide Figma layout information to AI coding agents like Cursor 项目地址: https://gitcode.com/gh_mirrors/fi/Figma-Context-MCP 点击查看 免费下载 导读 ROADMAP.md 是 Figma-Context-M…

阅读更多 →
Jev-Omni:轻量多模态决策模型的动态门控与一致性校准 2026/10/2 21:36:00

Jev-Omni:轻量多模态决策模型的动态门控与一致性校准

1. 项目概述:Jev-Omni不是“玩具模型”,而是多模态决策能力的工程化落地切口你可能在热搜里看到过“Jev-Omni”这个名字,搭配着“图文音视频全支持”“《原神》声音被仿冒判赔75万”这类标题一起刷屏。但别急着划走——这不是又一个PPT级AI概…

阅读更多 →
SAP MIGO收货报错BK128/K5112:科目确定失败排查与修复指南 2026/10/2 21:35:53

SAP MIGO收货报错BK128/K5112:科目确定失败排查与修复指南

前两天收到一个同事的求助,说他们在SAP系统里执行MIGO收货时被拦住了,屏幕上同时弹出两个报错:BK128和K5112。这位同事是MM模块出身,对财务集成的科目确定逻辑本来就有点头大,一看到这两个编号连着蹦出来,整…

阅读更多 →
Redis Lua原子预扣:大模型API网关配额防透支实践 2026/10/2 21:35:53

Redis Lua原子预扣:大模型API网关配额防透支实践

做网关层大模型API治理有一段时间了,最让我记忆深刻的是某次月底账单事故:内部一个测试项目开了每日100万token的配额,结果一个压测脚本十几分钟就把当天配额烧穿,等发现时账单已经飘红。事后复盘,问题不在于没做限流&…

阅读更多 →
蓝牙芯片驱动开发-第4章第6题-OTA升级中如何确保固件完整性 2026/10/2 21:35:31

蓝牙芯片驱动开发-第4章第6题-OTA升级中如何确保固件完整性

蓝牙面试题解析:OTA 升级中如何确保固件完整性? 难度:⭐⭐⭐⭐ 较难 | 场景:社招二面/三面、OTA 开发 | 高频:🔥🔥🔥🔥🔥 标准答案 OTA 升级通过 传输层加密 + 分块校验 + 哈希验证 + 数字签名 四层保障固件的端到端完整性: ① OTA 完整性保障模型 手机/云端…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉