//與事務管理和併發控制相關的檔案目錄結構
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...