A用户 update 5000 -> 7000
B用户 select这条数据 读出来是5000
因为 读的是undo segments ,此时 7000 其实已经写进去了但是是在do blocks中,undo segments 是为了做回滚用 保存更新前的事
undo segments -> do blocks
很重要的一点 :
oracle select count(*) from xxx不会锁表 因为他有undo segments
sql server就不行了 要锁表 万一挂了 后面事务全挂 oracle 无非就是io量大
本文探讨了Oracle和SQL Server两种数据库系统在事务处理上的差异,重点解释了Oracle如何通过undo segments实现非阻塞的SELECT操作,而SQL Server在相同场景下可能需要锁定表。
582

被折叠的 条评论
为什么被折叠?



