数据库隔离级别和并发读取问题

本文探讨了数据库的隔离级别,包括READ-UNCOMMITTED、READ-COMMITTED和REPEATABLE-READ,详细解释了脏读、不可重复读、幻读以及第一类丢失更新、第二类丢失更新的问题,并通过实际测试展示了不同隔离级别下的并发读取现象。同时,提出了使用for update避免幻读的解决方案。
摘要由CSDN通过智能技术生成

数据库隔离级别和并发读取问题

相关博客

数据库隔离级别

1. 隔离级别
隔离级别 描述
READ-UNCOMMITTED (读未提交数据) 允许事务读取未被其他事务提交的变更数据, 会出现脏读、不可重复读和幻读问题
READ-COMMITTED (读已提交数据) 只允许事务读取已经被其他事务提交的变更数据, 可避免脏读, 仍会出现不可重复读和幻读问题。
REPEATABLE-READ (可重复读) 确保事务可以多次从一个字段中读取相同的值, 在此事务持续期间, 禁止其他事务对此字段的更新, 可以避免脏读和不可重复读, 仍会出现幻读问题。
SERIALIZABLE (序列化) 确保事务可以从一个表中读取相同的行, 在这个事务持续期间, 禁止其他事务对该表执行插入、更新和删除操作, 可避免所有并发问题, 但性能非常低。
2. 数据库支持
数据库 支持的隔离级别 默认隔离级别
Oracle READ-COMMITTED, SERIALIZABLE READ-COMMITTED
MySQL READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE REPEATABLE-READ

数据库并发读取问题

1. 第一类丢失更新

TransactionA 的 rollback 会撤销掉 TransactionB 的 commit

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值