InnoDB 事務和併發控制相關的檔案

2021-07-28 11:17:20 字數 1925 閱讀 7333

//與事務管理和併發控制相關的檔案目錄結構

storage\innobase

├─btr//b+樹索引結構,鎖物件施加在索引項上面,而不是直接施加在記錄/元組上面

│btr0btr.cc

//索引管理,索引的建立、釋放等相關操作

│btr0bulk.cc //索引上資料的批量操作

│btr0cur.cc//索引樹上遍歷對row進行修改等相關的輔助操作

│btr0pcur.cc //sql語句中(select、update和delete)對索引樹的遍歷條件所得到的一些固定屬性從而決定索引樹的遍歷

│btr0sea.cc//索引樹上的查詢操作

├─data//物理儲存結構:欄位和記錄

│data0data.cc//欄位和元組級的一些操作

│data0type.cc//資料型別的判斷

...

││├─lock//存放innodb的鎖操作相關檔案

│lock0iter.cc//鎖的佇列管理,初始化鎖的佇列和獲得鎖佇列中的鎖

│lock0lock.cc//鎖的管理,包括鎖的授予、**、死鎖檢測等操作,是鎖操作相關的最主要的檔案

│lock0prdt.cc//謂詞鎖相關操作,用以實現

next-key locking

演算法

│lock0wait.cc//鎖等待相關的操作,包括因鎖等待而掛起、釋放、檢查等操作

│├─log//日誌管理

│log0log.cc//redo日誌,通過mini-transaction的mtr_commit()把日誌資訊寫到redo日誌檔案中

│log0recv.cc//恢復操作

...

│├─mtr//mini-transaction(事務的重要子部分)相關處理

│mtr0log.cc//mini-transaction寫日誌部分

│mtr0mtr.cc//mini-transaction日誌首先要刷到日誌緩衝,然後可把日誌緩衝中的資料順序刷出到物理儲存,節約了io操作

...

├─page//物理頁面操作

│page0cur.cc//在物理頁面上的遍歷操作(插入、刪除)

│page0page.cc //索引的葉子節點相關操作。索引只是一棵樹,葉子是物理資料

│page0zip.cc//頁面壓縮的相關操作

...

│├─que//query graph

│que0que.cc//查詢圖(query graph)演算法的實現,用以判斷是否有環存在。在事務管理中用以跟蹤事務的執行過程

│├─read//cursor read,一致性無鎖讀

│read0read.cc//mvcc機制實現的主要**,用快照隔離技術(innodb中稱為readview)實現一致性無鎖讀操作

...

│├─trx//事務管理相關操作

│trx0i_s.cc//information schema裡與事務和鎖關聯的系統表的相關操作:innodb_trx、innodb_locks、innodb_lock_waits

│trx0purge.cc//purge操作,用於清理舊版本資料

│trx0rec.cc//undo日誌相關的操作,側重於uodo日誌中使用到的page和record等相關的操作

│trx0roll.cc//事務回滾操作相關的內容

│trx0rseg.cc//回滾段的管理,包括建立、初始化、使用、釋放等,rseg的意思是rollback segment

│trx0sys.cc//事務管理在系統層面的一些相關操作,如事務系統的啟動、關閉等

│trx0trx.cc

//事務管理相關的內容,如事務開始、事務提交、事務資訊列印輸出等動作

│trx0undo.cc

// undo日誌相關的操作,側重於undo日誌管理方面

...

事務和併發控制

事務就是使用者定義的乙個資料庫操作序列,這些操作要麼全做,要麼全不做,是乙個不可分割的工作單位。事物的acid特性 事務具有原子性,一致性,隔離性和永續性 原子性 表示事務中的操作是乙個原子操作,要麼全做,要麼全不做 一致性 表示資料庫必須從乙個一致狀態轉移到另乙個一致狀態,一致性是與原子性密切相關...

學習總結 INNODB 事務併發

innodb的讀資料總是一致的,如果在session 1讀的過程中,session 2對資料進行修改,不管session 2是否提交,在session 1的事務中都會讀到修改前的值。讀操作保持一致性並不受阻塞的原因是多版本機制。所謂多版本機制是指innodb會儲存被修改資料的舊版本,以支援併發和回滾...

事務併發 併發控制(加鎖)

事務處理中的併發控制 1.併發操作 資料庫是乙個共享資源,允許多個使用者程式並行地訪問資料庫,所以當多個使用者併發地訪問同一資料,就可能出現資料的不一致性。例如 假設有兩個事務 t1 和 t2 它們都需要讀出並修改資料 a 其執 況如下所示 執行順序 1 2 3 4 5 6 事務t1 讀aa a 1...