欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle如何保持一致性读?

程序员文章站 2023-12-31 15:53:22
...

一致读的原理,就是查询的记录由查询的这一时间点决定,后面即便变化了,也要根据回滚保持的前镜像记录,取到那个点的数据。ORAC

一致读的原理,,就是查询的记录由查询的这一时间点决定,后面即便变化了,也要根据回滚保持的前镜像记录,取到那个点的数据。Oracle是如何保证的呢?首先我们要了解两个情况:

1, SCN:System Change Number。这是一个只会增加不会减少的递增的数字,存在于ORACLE的最小单位块里,但某块改变时SCN就会递增。

2,数据库的回滚段记录槽,事物槽是用来分配回滚段空间的。如果你更新了某块,事务就被写进事务槽里。如果没有提交或者回滚,该块就存在活动事务,数据库读到次块可以识别到这种情况的存在。

因此Oracle在做一致读的时候,首先是看发起的SCN是否大于当前查询块的SCN,如果小于,毫无疑问从回滚段获取前镜像数据。如果SCN确实大于当前查询块的SCN,还要确保该块没有活动事务,否则还是要去前镜像查找。

所以ORACLE的回滚段既可以回滚数据,又可以保证一致性读。

上一篇:

下一篇: