数据库隔离机制的实现

本文详细介绍了数据库的四种隔离机制:读未提交、串行化、读已提交和可重复读,及其解决的并发问题——脏读、不可重复读和幻读。重点讨论了InnoDB引擎在可重复读级别下如何利用间隙锁和临键锁避免幻读现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库隔离机制的实现


数据库隔离机制
  1. 串行化
  2. 可重复读
  3. 读已提交
  4. 读未提交
数据库事务可能导致的问题
  1. 脏读
  2. 不可重复读
  3. 幻读
脏读

​ 事务A,先执行,处于未提交的状态:

​ insert into table values(1, xx);

​ 事务B,后执行,也未提交:

​ select * from table ;

​ 如果事务B能够读取到(1, xx)这条记录,事务A就对事务B产生了影响,这个影响叫做“脏读”,读到了未提交事务操作的记录。

不可重复读

​ 事务A,先执行:

​ select * from table where id=1;

​ 结果集为:

​ 1, xx

​ 事务B,后执行,并且提交:

​ update table set name=yy where id=1;

​ commit;

​ 事务A,再次执行相同的查询:

​ select * from table where id=1;

​ 结果集为:

​ 1, yy

​ 这次是已提交事务B对事务A产生的影响,这个影响叫做“不可重复读”,一个事务内相同的查询,得到了不同的结果。

​ 和脏读区别在于,脏读在于读事务B还没有提交的数据,而不可重读是读取到事务B已经提交的数据

幻读
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值