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

脏读、不可重复读、幻读示例

1. 脏读 (Dirty Read)

场景:事务A读取了事务B未提交的数据修改。

-- 事务A
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- 账户1扣除100元,未提交-- 事务B
BEGIN TRANSACTION;
SELECT balance FROM accounts WHERE id = 1; -- 读取到未提交的修改(脏读)
COMMIT;-- 事务A
ROLLBACK; -- 事务A回滚,但事务B已经读取了错误的数据

2. 不可重复读 (Non-repeatable Read)

场景:同一事务内两次读取同一数据,结果不同。

-- 事务A
BEGIN TRANSACTION;
SELECT balance FROM accounts WHERE id = 1; -- 第一次读取,返回1000-- 事务B
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;-- 事务A
SELECT balance FROM accounts WHERE id = 1; -- 第二次读取,返回900(与第一次不同)
COMMIT;

3. 幻读 (Phantom Read)

场景:同一事务内两次查询同一条件,返回的行数不同。

-- 事务A
BEGIN TRANSACTION;
SELECT * FROM accounts WHERE balance > 1000; -- 第一次查询返回2条记录-- 事务B
BEGIN TRANSACTION;
INSERT INTO accounts(id, balance) VALUES (3, 1500); -- 新增一个高余额账户
COMMIT;-- 事务A
SELECT * FROM accounts WHERE balance > 1000; -- 第二次查询返回3条记录(出现幻行)
COMMIT;

隔离级别与这些问题

隔离级别脏读不可重复读幻读
READ UNCOMMITTED可能可能可能
READ COMMITTED避免可能可能
REPEATABLE READ避免避免可能
SERIALIZABLE避免避免避免
http://www.xdnf.cn/news/3142.html

相关文章:

  • ComputeShader绘制全屏纯色纹理
  • C++入门小馆: 模板
  • AI HR新范式:易路iBuilder如何通过“技术隐身,价值凸显”,成为HR身份转型的好帮手
  • 分享:VTK版本的选择 - WPF空域问题
  • 手动创建一份konga对应helm的chart项目
  • TCP和UDP传输层协议
  • 【论文速读】《Scaling Scaling Laws with Board Games》
  • 后端接口请求http改为https
  • ReentrantReadWriteLock的源码详细剖析
  • Gin 集成 prometheus 客户端实现注册和暴露指标
  • 基于策略模式实现灵活可扩展的短信服务架构
  • 基于vue框架的电影院网上售票系统49iu6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 综合案例建模
  • C++日更八股--day2
  • 婴幼儿急救实训室优化空间布局科学路径5.7
  • 【自然语言处理与大模型】如何获取特定领域的微调数据集?
  • jmeter读取CSV文件中文乱码的解决方案
  • 单片机不同通信方式的适用场景
  • requestAnimationFrame与requestIdleCallback的深度解析:从执行时机到应用场景
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(12): ておき ます
  • mysql 配置文件中的[client]、[mysqld]、[mysqldump]和[mysql]区块的作用区别
  • 【Python学习路线】零基础到项目实战系统
  • 文件备份服务器,备份文件内容到服务器有哪些方法?
  • element-plus + splitpanes 实现左右拖动控制宽度
  • STM32F10X OLED屏幕点亮
  • 从Ping到iperf3:深度实战无线网络压测与优化指南
  • C语言之操作符
  • 基本算法之龟速乘
  • 最新DeepSeek-Prover-V2-671B模型 简介、下载、体验、微调、数据集:专为数学定理自动证明设计的超大垂直领域语言模型(在线体验地址)
  • 在原生代码(非webpack)里使用iview的注意事项