最初由 yaky 发布
[B]我同时打开了两个会话,两个都同时查一张表,查完后,我在一个会话中用update更改了这个表,然后commit,此时我再用另一个会话查这个表,发现数据已经修改过来了,如果按照blue_prince10的说法,此时再另一个会话中查询还是读回滚段的话,那岂不是数据看起来还是没变吗?但事实另一个会话马上就觉察到数据的改变了,我想问问它走什么机制能等数据commit后,就不从回滚段读了,谢谢! [/B]
你先理解这一句:只要他开始查询时的SCN小于COMMIT后的SCN,那么它读取数据还是从回滚段里面读。
如果一个用户的事务提交,SCN为100的话,另一个用户又紧接着去找数据,这个用户的找数据用的SCN应该是100,这个时间就不再去UNDO回滚段找数据了。直接从DB BUFFER找了。
|