[align=justify; direction: ltr; unicode-bidi: embed; vertical-align: baseline;]2.在执行一条update语句后一直未提交,数据会写到数据文件中吗?
一致性查询及一致性读原理
Select * from test where object_id = 2;
如果8点钟可以查询出两条记录,假设一下,如果此查询很慢,从8点开
始查,9点才能结束。在此期间不巧被删了一条数据,请问最终返回的结果是一条数据还是两条数据?
原理:
两个前提:
?1. 了解数据库的SCN(System change Number),是数据库内部的时钟,可以与时间相互转换,是一个只会增加不会减少的数字,存在于Oracle的最小单位块里,当某块改变时SCN就会递增。
?2. 数据库的回滚记录事务槽,如果你更新了某块,事务就被写进事务槽里。如果未提交或回滚,改块就存在活动事务,数据库读到此块可以识别到这种情况的存在。
?
?