lz 经常在 v 站评论帮助他人, 很少发帖, 这次借贵宝地, 请教路过的各位大佬谈谈看法, 解答一下疑惑:
oracle 在具体实践中是否会考虑 "不可重复读", "幻读" 问题, 又是如何去解决的呢?
下面是楼主做的准备工作:
-
事务的隔离级别
- MySQL(InnoDB)
- 默认的事务隔离级别是 REPEATABLE-READ(可重复读)
- oracle
- 默认的事务隔离级别是 READ COMMITTED(读提交)
- MySQL(InnoDB)
-
存在的问题
- MySQL 存在 "幻读" 问题
- oracle 存在 "不可重复读" "幻读" 问题
-
解决方法
- MySQL 使用 Next-Key Lock(锁定一个范围,并锁定记录本身), 具体表现就是在事务内查询时 select... for update
- oracle 暂时没看到具体实践的资料
楼主查过 oracle 官网的文档, 似乎也没有具体的答案, db2 的资料多一些, 直接修改隔离级别为 "序列化读" 也不现实.
