oracle是一个多用户系统,当一个会话开始读取数据还未结束读取之前,可能会有其他会话修改它将要读取的数据。如果会话读取到修改后的数据,就会造成数据的不一致。
一致性读就是为了保证数据的一致性。在Buffer cache中的数据块上都会有最后一次修改数据块时的scn。如果一个事务需要修改数据块中的数据,会先在回滚段中保存一份
修改前数据和scn的数据块,然后再更新buffer cache中的数据块的数据及其scn,并标示其为胀数据。当其他进程读取数据块时,会先比较数据块上的scn和自己的scn。
如果数据块上的scn小于等于进程本身的scn,则直接读取数据块上的数据;如果数据块上的scn大于进程本身的scn,则会从回滚段中找出修改前的数据块读取数据。
一致性读就是为了保证数据的一致性。在Buffer cache中的数据块上都会有最后一次修改数据块时的scn。如果一个事务需要修改数据块中的数据,会先在回滚段中保存一份
修改前数据和scn的数据块,然后再更新buffer cache中的数据块的数据及其scn,并标示其为胀数据。当其他进程读取数据块时,会先比较数据块上的scn和自己的scn。
如果数据块上的scn小于等于进程本身的scn,则直接读取数据块上的数据;如果数据块上的scn大于进程本身的scn,则会从回滚段中找出修改前的数据块读取数据。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30201626/viewspace-1813763/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30201626/viewspace-1813763/
6155

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



