我的oracle笔记-06 之 有限CR
来源:互联网 发布:网络校时电话 编辑:程序博客网 时间:2024/06/02 00:09
到了现在,我们已经可以来完整地描述ORACLE是如何构造页面CR的了。我们假设这个构造过程是从CUR页面开始的,系统首先对该页面进行Cleanout,然后Rollback掉所有未提交的事务(但不包括你自己),最后Rollback掉所有提交的事务,直到当前所有事务的CommitSCN都<=你的SnapshotSCN。注意到你实际上并不会去修改CUR页面,所以在更多的时候,你需要首先Clone。
每次都从CUR页面开始构造CR显然是一种低效的设计,它会极大地增加回滚段的访问压力,更重要的是,CUR版本只有一个,因此上述处理在RAC环境中,将是一个悲剧。
所以我们很自然地希望,当我们构造一个CR页面时,我们可以利用系统当前已经构造出来的CR页面作为我们的起点。要完成这样的优化,我们需要仔细地设计。
首先,我们要保证,候选的CR页面上不会Rollback掉在我的SnapshotSCN开始之前的提交,这意味着我将丢失部分实际上可见的更新,因此,我们需要CR页面的构造者纪录所有被它Rollback掉的提交事务中CommitSCN中的最小值(CR_SCN)。对于你来说,只有那些CR_SCN>=你的SnapshotSCN的CR页面才来拿来作为你的起点。事实上,系统会从满足这个条件的所有CR页面中,依次选择下一个CR_SCN离你的SnapshotSCN最近的页面作为这场选拔赛的出场顺序。
但这还不够,接下来我们需要保证,候选的CR页面上不会Rollback掉你的更新,但问题在于,如果不访问CUR页面,你无法知道你是否在该页面上进行了更新。所以你会先考虑,如果我从来没有进行过更新(Env_UBA = 0),那么这个页面对我来说肯定是安全的;如果不是,那我希望当初构造这个CR页面的人告诉我,当初Rollback过了哪些活跃事务,里面有没有我。这里会有几种情况:
1)如果该CR页面上没有Rollback过任何活跃事务(CR_XID = 0),那么安全。
2)如果该CR页面上只Rollback过一个事务(记录在CR_XID中,且CR_SFL = 0),如果这个事务不是我,那么安全;如果是我,那么我需要考虑,这是否是我在前面某个较早时刻构造出的一个CR页面,然后接下来我又进行了某些更新,因为你无法知道这些更新是否发生在这个页面的CUR版本上,所以只有当你没有再进行过任何更新(ENV_UBA < CR_UBA)时,你才能保证这个CR页面是安全的。
3)如果该CR页面上Rollback过两个或者更多的事务,你别指望ORACLE会把这些事务全部记录下来,事实上,这时候系统只记录谁CR了这个页面(记录在CR_XID中,且CR_SFL= 1),和前面的处理一样,如果这个事务是你,而你在这之后没有再进行过任何更新(ENV_UBA <CR_UBA),那么安全;否则,你已经不可能知道是否安全了,所以放弃吧。
我喜欢把这种能够利用已有的CR版本来构造新的CR版本的方法称为有限CR,不用每次都从CUR版本开始?听上去真是一种不错的设计,它极大地消减了页面级CR在最差情况下对系统性能的影响。在RAC环境中,有限CR构成了CacheFusion的基础。
转载自:http://blog.sina.com.cn/s/blog_d3bf72ff0101o080.html
- 我的oracle笔记-06 之 有限CR
- 我的oracle笔记-02 之 回滚段
- 我的oracle笔记-03 之 ITL
- 我的oracle笔记-04 之 cleanout
- 我的学习之路—Oracle数据库学习笔记
- 我的oracle笔记-01 之 MVCC协议
- 我的oracle笔记-05 之 保留空间
- 我的oracle笔记-07 之 完结篇
- 我的oracle学习笔记(血泪史之五)…
- oracle常用命令(我的笔记)
- 我的oracle笔记六
- 我的Oracle技术笔记
- 我的oracle\sqlserver笔记
- oracle我的笔记-oracle入门命令
- 看来我能学会的东西很有限
- oracle 中的CR块详解+
- oracle 中的CR块详解+
- 我的oracle笔记七(其他)
- 模拟一个String的trim功能
- 3.Spring Bean
- 安装FTP服务器
- dataguru课程优惠码
- hdu 4739 Zhuge Liang's Mines (水题:坑题!!!)
- 我的oracle笔记-06 之 有限CR
- 跨系统数据库取数实现方案
- R12中注册客户化应用为多组织应用
- Linux 下ssh创建ip加密码隧道
- VM虚拟机无摄像头问题解决
- 关于DEBUG调试用的宏定义
- 《捕鱼达人 3》主程洪志雄专访:如何使用Cocos2d-x完美呈现捕鱼3
- poj 1159 Palindrome (DP:LCS+滚动数组)
- T-SQL系列之附加数据库