`
cuijiemin
  • 浏览: 265564 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一致读的步骤

 
阅读更多

每一个数据块的头部存在ITL信息(interested transaction list),其中的每一项是影响这个数据块的事务信息。而在每一行中都存在一个lock byte,其中存储着ITL槽的信息。因此,当想查询某一行的事务信息时,可以根据byte lock查找ITL槽中的事务ID,然后根据事务ID从回滚段中的事务表中查询事务信息。

1. Read the Data Block.

2. Read the Row Header.

3. Check the Lock Byte to determine whether there's an ITL entry.

4. Read the ITL entry to determine the Transaction ID (Xid).

5. Read the Transaction Table using the Transaction ID. If the transaction has been committed and has a System Commit Number less than the query's System Change Number, update the status of the block (block cleanout) and start over at step 1.

6. Read the last undo block (Uba).

7. Compare the block transaction ID with the transaction table transaction ID. If the Transaction ID in the undo block doesn't equal the Transaction ID from the Transaction Table, then issue ORA-1555, Snapshot Too Old.

8. If the Transaction IDs are identical, make a copy of the data block in memory. Starting with the head undo entry, apply the changes to the copied data block.

9. If the tail undo entry (the actual first undo entry in the chain, or the last in the chain going backwards!) indicates another data block address, read the indicated undo block into memory and repeat steps 7 and 8 until the undo entries don't contain a value for the data block address.

10. When there's no "previous data block address," the transaction has been completely undone.

11. If the undo entry contains:

a. a pointer to a previous transaction undo block address, read the Transaction ID in the previous transaction undo block header and read the appropriate Transaction Table entry. Return to step 5.

b. an ITL record, restore the ITL record to the data block. Return to step 4.

参考:

http://www.jlcomp.demon.co.uk/cleanout.html
http://www.ixora.com.au/tips/admin/ora-1555.htm

将一致读的步骤细化一点,请指正:

从第5步开始:
IF 在Transaction Table 中根据Transaction ID 找到transaction
IF transaction 已经commit
IF query scn>commit scn
则接受该块,进行clean out,返回1
ELSEIF query scn 则进行一致性读,从第8步向后执行
ELSEIF transaction 没有commit
也进行一致性读,从第8步向后执行

ELSEIF 在Transaction Table 中没有找到transaction(回滚信息被覆盖了,也说明事务已经提交,因为只有提交后所在的undo extent才能被覆盖。这样query scn则去比较control scn。control scn是指事务表中最近一次被重用的transaction slot的前一个事务的commit scn,也就是事务表中所能找到的最小的commit scn了)
IF query scn 则无法知道query scn和commit scn得大小关系,出现ORA-01555错误
IF query scn>control scn
则query scn肯定>commit scn
则接受该块,进行clean out,并将block 中ITL标记上“U”,表示“upper bound commit” ,并返回1

分享到:
评论

相关推荐

    DB主从一致性架构优化4种方法

    ### DB主从一致性架构优化4种方法 #### 需求背景 在大多数互联网应用场景下,数据处理呈现出明显的“读多写少”特征。为了提高读取性能并满足大规模用户需求,很多系统采取了“一主多从”的数据库架构设计。这种...

    迈克尔逊实验步骤.doc

    等厚干涉是指当M1和M2'非常接近时,观察到的条纹间距几乎一致,此时转动粗调手轮,弯曲条纹向圆心移动,逐渐形成直条纹。加入白炽灯照明,可以清晰看到彩色条纹,进一步分析条纹的形状和颜色分布特点。 总之,...

    如何检查SMC存储卡有非一致性或者是格式错误以及修复的方法和步骤?.docx

    ### 如何检查与修复SMC存储卡的非一致性或...综上所述,了解SMC存储卡非一致性或格式错误的原因、识别方法及修复步骤对于确保PLC正常工作至关重要。遵循上述指南,可以帮助用户有效地解决问题,确保PLC系统的稳定运行。

    缓存与数据库一致性保证

    由此可见,在这种情况下,尽管写请求A先于读请求B发生,但由于网络延迟等因素的影响,读请求B可能会先于写请求A完成,从而导致缓存与数据库中的数据不一致。 #### 三、不一致优化思路 针对上述问题,本文将介绍一...

    微服务架构下的数据一致性:概念及相关模式.docx

    2. **补偿事务(Saga)**:通过一系列相互依赖的本地事务组成一个长事务,如果某一步失败,可以通过回滚之前成功的步骤来补偿,确保业务逻辑的整体一致性。 3. **读已确认(Read-After-Write)**:在更新操作后,...

    mysql 可重复读和读提交的区别(csdn)————程序.pdf

    总的来说,可重复读保证了事务内部的查询一致性,而读已提交则提供了更高的并发性,牺牲了一部分一致性。选择哪种隔离级别取决于应用的需求和对并发控制的容忍度。在实际应用中,需要根据业务场景来合理选择事务隔离...

    拓展客户关系的六个关键步骤

    要赢得客户的信任,必须诚实守信,提供一致的服务,并在承诺与执行之间保持一致。通过展现专业性,及时回应问题,以及展示对客户利益的关注,可以逐步建立信任。 3. **创造价值**:客户关系的深化依赖于你能为他们...

    文本框说明步骤流程PPT模板.pptx

    文本框在制作PPT时是不可或缺的工具,它用于组织和呈现信息,让观众能够清晰地理解演示文稿中的步骤流程。以下是一份详细的“文本框说明步骤流程PPT模板”制作指南,帮助你创建专业且引人入胜的演示文稿。 1. **...

    SP605_ID回读处理

    在实际操作中,回读IDCODE通常需要以下步骤: 1. 初始化:连接到FPGA的配置接口,通常是JTAG或SPI链路。 2. 选择ICAP模式:通过配置接口向FPGA发送指令,切换到ICAP模式。 3. 发送读取IDCODE的命令:在ICAP模式下,...

    软件项目验收流程各步骤内容.pdf

    在这个步骤中,需要对文档的完备性、内容针对性、内容充分性、文档价值、图表翔实性、符合甲方规范程度、内容一致性、文字明确性、易读性等方面进行审核。 五、源代码审核 源代码审核是软件验收测试的一个重要步骤...

    主从DB与cache一致性

    ### 主从DB与Cache一致性详解 #### 一、引言 在现代软件系统中,为了提高性能和可扩展性,通常采用主从数据库复制技术以及缓存机制。然而,在这种架构下,由于主从数据库之间的数据同步延迟以及并发读写操作的存在...

    jQuery响应式多步骤演示代码.zip

    在这里,CSS被巧妙地利用来确保多步骤流程在不同设备上都能提供一致的用户体验。 **jQuery特效** 包括但不限于滑动、淡入淡出、滚动、弹出框等,这些效果增强了用户在多步骤过程中的互动性。例如,可能有一个步骤...

    多Cache一致性__监听协议模拟器使用方法1

    在模拟过程中,用户可以选择不同的CPU(A、B、C、D),以及访问类型(读或写),输入要访问的内存块号,模拟器会显示从访问请求发出到完成的整个处理流程。内存块的颜色变化直观地反映了其状态:灰色表示块无效,淡...

    6RA70安装调试详细步骤心得

    参数读取方法是:打开软件点击下面的按钮先设置连接参数设置波特率等信息,注意波特率要和电脑上的端口,还有装置里边的参数一致才行设置好后点击这个读取出来这个画面后点击这个开始按钮等读出来后软件自动打开已经...

    素雅简约风读书笔记ppt模板

    8. 调整整体设计,确保色彩、字体和布局与主题保持一致,同时保持简洁、易读。 9. 最后,预览并保存PPT文件,必要时还可以将其转换为PDF格式以便于分享或打印。 通过以上步骤,用户可以利用这个素雅简约风的读书...

    OrCAD Capture-CIS建库详细步骤解析

    内容概要:本文详细介绍了基于Access2016库文件和Allegro17.2版本创建Capture-CIS库的...其他说明:文中提供了一系列具体的操作步骤和技巧,建议边读边实践以加深理解。同时需要注意不同版本软件间可能存在细微差异。

    数控五轴机床调试步骤

    - 在不同角度下移动Z轴使百分表读数保持一致,并记录Z轴坐标值进行计算。 #### 结语 通过对Hiteco五轴机床的调试步骤进行详细解析,我们可以看出,每个步骤都需要精细的操作和准确的数据记录。只有严格按照这些...

    强制性产品认证车辆一致性证书二维码解密.rar

    2. **数据解析**:解码软件会识别二维码中的编码格式,可能是常见的QR Code、Data Matrix或Aztec Code等,然后将二进制数据转换为可读的文本形式。 3. **解密算法**:如果数据经过加密,解码器会应用相应的解密算法...

    M88电源标定步骤-修改版.zip

    - **调整电位器**:如果存在偏差,需要找到电源内部的校准电位器,根据手册指示进行微调,直到万用表的读数与电源显示值一致。 - **重复过程**:对于不同的电压和电流设定,重复以上步骤,确保在整个工作范围内都...

    三一自制仪表校秤步骤.doc

    这是因为在空秤状态下,传感器的读数应当为零,任何偏差都可能导致后续称重数据的不准确。一旦确认称量斗的环境符合要求,操作者需要进入仪表的[SETUP]菜单进行设置。具体操作步骤包括连续按选择按钮三次以进入...

Global site tag (gtag.js) - Google Analytics