lock0lock.c裏面函數總結

google了大部分資料,結合自己的理解,總結下lock0lock.c文件裏函數

死鎖相關函數

lock_deadlock_recursive():死鎖判斷 死鎖日誌產生

lock_deadlock_trx_print():死鎖中事務信息處理打印

lock_deadlock_lock_print():每個事務持有、等待的鎖信息

lock_rec_print():記錄被鎖的信息


lock_sys_create(): db啓動時創建鎖系統


一致性讀檢查記錄

lock_clust_rec_cons_read_sees():  在一致性讀情況下,查找某記錄是否能被看到。能被查找到返回true;如果更早期版本被檢索,返回false 。 主要參數 


lock_sec_rec_cons_read_sees():在一致性讀情況下,非聚簇索引記錄是否能被查到


鎖相關的幾個重要函數:

 lock_table (): 負責加表鎖

lock_rec_lock():鎖記錄的重要函數

row0mysql.cc::row_lock_table_autoinc_for_mysql(): 負責管理表auto increment自增鎖的重要函數。自增鎖 是表基本鎖。

(ps: auto_increment 自增鎖 因爲是表鎖,鎖粒度高,在高併發情況下,會大大影響insert性能)



死鎖回滾的事務:姜承堯《mysql核心內幕 innodb引擎》中說redo產生量少的事務被選中回滾;有的說根據事務的權重,權重小的事務被選中回滾,這個需要再仔細看看源碼

row0sel.c::row_search_for_mysql():重要函數,預防死鎖處理邏輯,比較複雜。


後續繼續補充


發佈了193 篇原創文章 · 獲贊 30 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章