oracle事務內部原理
事務內部原理:概述
一個事務是當插槽分配在事務表的回滾段頭上開始的,這是一個事務物理表現.事務識別符號指示了這
個位置.事務識別符號有以下的結構:
txid=usn.slot.wrap(回滾段編號.事務插槽ID.SCN wrap
在一個事務插入,更新或刪除一個表資料時,一個事務插槽會分配在包含這些行資料的資料塊中.
這個事務插槽被用來標記這些行被鎖定直到事務被提交或回滾.事務插槽包含事務識別符號.
當改變應用到資料塊時,重做資訊也會生成並儲存在回滾段中.事務表插槽包含一個指標指示事務
識別符號
事務內部原理:讀一致性
為了支援在第一個事務還沒有提交時要能讓不同會話能讀取相同資料塊
當讀取資料塊(可能資料塊在快取中)會話,首先會找到開啟的事務插槽.檢查事務狀態(透過讀取
回滾段頭)並找出它仍處於活動狀態.這意味著會話必須透過活動事務來對資料塊第一次被改變
之前的映象建立一個檢視(快照).這就叫作資料塊的一致性讀取副本,這個副本是透過先複製資料塊
的副本然後透過從回滾段中應用重做記錄來回滾上次發生的改變.
如果一致性讀取要求訪問資料塊,回滾段頭和重做記錄.如果它們任何一個有錯誤都會影響一致性讀取.
事務內部原理:鎖
為了支援在第一個事務還沒有提交時要能讓另外的會話改變(更新或刪除)被第一個事務所修改的行
新的會話當讀取資料塊(資料塊可能在快取中)將會找到開啟的事務插槽.它將檢查事務狀態(透過讀取
回滾段頭)找到它仍處於活動狀態.它會告訴會話程式在這種情況下不能繼續而要等待其它事務完成(
提交或回滾)
如果必須要讀取回滾段頭來構建事務插槽的狀態.如果回滾段頭出現錯誤那麼會影響事務鎖
事務內部原理:提交
為了支援現在來提交第一個事務,這個事件會立即被標記為非活動的事務表插槽.
然而直到後來,資料塊在事務提交時本身可能沒有被更新.這意味著在提交後資料塊中的事務插槽可能
仍然處於開啟狀態.
然而當資料庫下次再次讀該資料塊時,會檢查事務表,以前提交的事務會被確認,事務插槽會關閉.
這被稱為延遲塊清洗.如果回滾段已經被刪除了,那麼在undo$中的scn記錄用來確認提交的事務
資料庫讀取回滾段頭來執行延遲塊清洗.如果回滾段出現故障那麼會影響延遲塊清洗.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-745945/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入解析 oracle drop table內部原理Oracle
- oracle事務Oracle
- oracle 中的事務Oracle
- Kubernetes 內部元件工作原理元件
- Kafka事務原理剖析Kafka
- 【REDO】Oracle redo內部結構Oracle Redo
- Java中的匿名內部類及內部類的二三事Java
- mysqldump的內部實現原理MySql
- pinpoint-php-aop 內部原理PHP
- oracle的只讀事務Oracle
- MySQL事務原理淺析MySql
- 【Spring】事務實現原理Spring
- MySQL 執行原理【事務】MySql
- Spring事務實現原理Spring
- Kafka事務實現原理Kafka
- MySQL事務實現原理MySql
- 詳解MySQL事務原理MySql
- oracle跟蹤常用內部事件號Oracle事件
- Oracle 巢狀事務 VS 自治事務Oracle巢狀
- Spark SQL / Catalyst 內部原理 與 RBOSparkSQL
- MongoDB 儲存引擎與內部原理MongoDB儲存引擎
- 原創:oracle 事務總結Oracle
- Spring事務專題(三)事務的基本概念,Mysql事務處理原理SpringMySql
- 分散式事務(3)---RocketMQ實現分散式事務原理分散式MQ
- Sring事務原理分享小結
- 談談分散式事務原理分散式
- Spring事務原理完全解析Spring
- async、await和generator函式內部原理AI函式
- Flink 核心元件 內部原理 多圖剖析元件
- Oracle面試寶典-事務篇Oracle面試
- 淺談ORACLE的分散式事務Oracle分散式
- MySQL高階12-事務原理MySql
- 深入理解 Spring 的事務原理Spring
- MySQL資料庫本地事務原理MySql資料庫
- 阿里終面:分散式事務原理阿里分散式
- 從一個線上問題分析binlog與內部XA事務提交過程
- 原來 ArrayList 內部原理這麼簡單
- Java HashMap原理及內部儲存結構JavaHashMap
- 放大器內部結構原理圖解圖解