oracle事務內部原理
事務內部原理:概述
一個事務是當插槽分配在事務表的回滾段頭上開始的,這是一個事務物理表現.事務識別符號指示了這
個位置.事務識別符號有以下的結構:
txid=usn.slot.wrap(回滾段編號.事務插槽ID.SCN wrap
在一個事務插入,更新或刪除一個表資料時,一個事務插槽會分配在包含這些行資料的資料塊中.
這個事務插槽被用來標記這些行被鎖定直到事務被提交或回滾.事務插槽包含事務識別符號.
當改變應用到資料塊時,重做資訊也會生成並儲存在回滾段中.事務表插槽包含一個指標指示事務
識別符號
事務內部原理:讀一致性
為了支援在第一個事務還沒有提交時要能讓不同會話能讀取相同資料塊
當讀取資料塊(可能資料塊在快取中)會話,首先會找到開啟的事務插槽.檢查事務狀態(透過讀取
回滾段頭)並找出它仍處於活動狀態.這意味著會話必須透過活動事務來對資料塊第一次被改變
之前的映象建立一個檢視(快照).這就叫作資料塊的一致性讀取副本,這個副本是透過先複製資料塊
的副本然後透過從回滾段中應用重做記錄來回滾上次發生的改變.
如果一致性讀取要求訪問資料塊,回滾段頭和重做記錄.如果它們任何一個有錯誤都會影響一致性讀取.
事務內部原理:鎖
為了支援在第一個事務還沒有提交時要能讓另外的會話改變(更新或刪除)被第一個事務所修改的行
新的會話當讀取資料塊(資料塊可能在快取中)將會找到開啟的事務插槽.它將檢查事務狀態(透過讀取
回滾段頭)找到它仍處於活動狀態.它會告訴會話程式在這種情況下不能繼續而要等待其它事務完成(
提交或回滾)
如果必須要讀取回滾段頭來構建事務插槽的狀態.如果回滾段頭出現錯誤那麼會影響事務鎖
事務內部原理:提交
為了支援現在來提交第一個事務,這個事件會立即被標記為非活動的事務表插槽.
然而直到後來,資料塊在事務提交時本身可能沒有被更新.這意味著在提交後資料塊中的事務插槽可能
仍然處於開啟狀態.
然而當資料庫下次再次讀該資料塊時,會檢查事務表,以前提交的事務會被確認,事務插槽會關閉.
這被稱為延遲塊清洗.如果回滾段已經被刪除了,那麼在undo$中的scn記錄用來確認提交的事務
資料庫讀取回滾段頭來執行延遲塊清洗.如果回滾段出現故障那麼會影響延遲塊清洗.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-745945/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [zt] Oracle恢復內部原理Oracle
- 深入解析 oracle drop table內部原理Oracle
- JVM 內部原理(一)— 概述JVM
- iOS中ARC內部原理iOS
- Oracle內部事件Oracle事件
- Kafka事務原理剖析Kafka
- Java中的匿名內部類及內部類的二三事Java
- oracle 事務Oracle
- oracle事務Oracle
- mysqldump的內部實現原理MySql
- MySQL排序內部原理探祕MySql排序
- Vitual DOM 的內部工作原理
- 瀏覽器內部工作原理瀏覽器
- MongoDB的內部架構,實現事務的原理以及資料同步和分片機制各是什麼?MongoDB架構
- MySQL 執行原理【事務】MySql
- MySQL事務實現原理MySql
- 詳解MySQL事務原理MySql
- MySQL事務原理淺析MySql
- oracle內部原理_如何修改block資料塊大體流程_checkpointOracleBloC
- Spark SQL / Catalyst 內部原理 與 RBOSparkSQL
- MongoDB 儲存引擎與內部原理MongoDB儲存引擎
- Kubernetes 內部元件工作原理元件
- 解讀Promise內部實現原理Promise
- 分散式事務(3)---RocketMQ實現分散式事務原理分散式MQ
- oracle內部培訓心得Oracle
- Spring事務實現原理Spring
- 【Spring】事務實現原理Spring
- Spring事務專題(三)事務的基本概念,Mysql事務處理原理SpringMySql
- iOS 揭露Block的內部實現原理iOSBloC
- 深入研究Windows內部原理系列(影片)Windows
- Git詳解之九:Git內部原理Git
- oracle 中的事務Oracle
- Oracle只讀事務Oracle
- ORACLE事務管理概述Oracle
- oracle分散式事務Oracle分散式
- 從一個線上問題分析binlog與內部XA事務提交過程
- 內部通訊服務Factory(WCF)
- 【REDO】Oracle redo內部結構Oracle Redo