我知道,当更新一个buffer 块的时候,没有commit,另一个回话查询的时候将产生CR块,只能看到原来的数据,不能看到更新后的数据。
问题:当commit以后,因为commit只是将logbuffer的写入到redolog里面了,并没有将buffer内的脏块写入到磁盘,为什么另一个会话会查看到修改后的数据呢?另一个会话不是也是查询的buffer内的CR块吗?
1,我不明白CR块消失是怎么回事?访问后就消失,那另一个访问后没提交的话又产生CR块吗?
2,另一个会话查询的话是查询的当前块还会CR块?commit以后当前块是修改前的数据还是修改后的?
谢谢!!!
希望能得到详细的解答。
oracle,CR块的一些问题
答案:2 悬赏:10 手机版
解决时间 2021-03-16 14:37
- 提问者网友:我一贱你就笑
- 2021-03-15 16:59
最佳答案
- 五星知识达人网友:行路难
- 2021-03-15 17:25
修改数据是在还原段里进行的。
查询数据来源于数据库高速缓冲区。
commit之后,修改的数据才从还原段写入高速缓冲区,最后被写入数据文件。
读一致性是是因为读是读的高速缓冲区的内容,修改的是还原段的内容,所以,读不受写影响。
你可以看一下UNDO表空间管理的资料。
查询数据来源于数据库高速缓冲区。
commit之后,修改的数据才从还原段写入高速缓冲区,最后被写入数据文件。
读一致性是是因为读是读的高速缓冲区的内容,修改的是还原段的内容,所以,读不受写影响。
你可以看一下UNDO表空间管理的资料。
全部回答
- 1楼网友:白昼之月
- 2021-03-15 18:36
版本如下:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯