脏读,幻读,不可重复读

博客介绍了数据库中的脏读、不可重复读和幻读问题。脏读是事务A两次查询因事务B未提交修改而结果不同,用读提交可解决;不可重复读重点在修改删除,需可重复读和行加锁;幻读重点在增加,需串行化和表加锁。还说明了不同隔离级别对这些问题的影响。

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

脏读,不可重复读,幻读

脏读:事物a开启,查询第一次数据,事物b开启,修改了数据,但是没提交,事物a又一次查数据,两次查到的不一样。
这里用read commited(读提交)就可以解决。

不可重复度:重点是修改(update)和删除(delete),事物a开启,查询第一次数据,事物b开启,修改数据并且提交,事物a又查了一次数据,发现数据改变,需要repeatable read才能解决问题。这种情况对行加锁就能避免。

幻读:重点是(insert)增加,事物a开启,查询第一次数据,事物b开启,对数据进行了增加,a事物再查,发现两次查询结果不一样,需要serializable才能解决问题。这种情况对表加锁才能避免。

读未提交read uncommitted 脏读 不可重复读 幻读 都会出现
读提交read committed 脏读避免; 不可重复读 幻读 会出现
可重复读repeatable read 脏读 不可重复读 避免; 幻读 会出现
串行化serializable 脏读 不可重复读 幻读 都可以避免

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值