mysql實戰45講筆記 07

2021-09-25 07:10:30 字數 584 閱讀 2085

07 行鎖功過:怎麼減少行鎖對效能的影響

mysql的行鎖是在引擎層由各個引擎自己實現的,不是所有資料庫都支援行鎖比如myisam

行鎖就是針對資料表中行記錄的鎖。

在innodb事務中,行鎖是在需要的時候才加上的,但並不是不需要了就立刻回訪,而是等到事務結束時才釋放,這就是兩階段鎖協議。

因此,如果事務中需要鎖多個行 ,要把最可能造成鎖衝突,最可能影響併發度的鎖盡量往後放。

一致性讀不會加鎖,就不需要做死鎖檢測;

死鎖和死鎖檢測
併發系統中不同執行緒出現迴圈資源依賴,都在等別人釋放資源

當出現了死鎖之後,有兩種策略

1.直接進入等待,直到超時,這個超時時間通過引數innodb_lock_wait_timeout設定

2.發起死鎖檢測,發現死鎖後,主動回滾死鎖鏈條中的某乙個事務,讓其他事務繼續執行,將引數unnodb_deadlock_detect設定為on,表示開啟這個邏輯.

一般採用第二種策略,因為第一種不好控制時間設定,但是第二種需要耗量大量cpu資源

因此死鎖檢測的思路,1.確保業務中不會出現死鎖,可以臨時把死鎖檢測關閉2.控制併發度

實戰mysql45講 MySQL實戰45講

作者簡介 林曉斌,網名 丁奇 前阿里資深技術專家,曾負責阿里雲rds核心開發團隊和運維團隊,並推動了alisql分支開源。作為活躍的mysql社群貢獻者,丁奇專注於資料儲存系統 mysql原始碼研究和改進 mysql效能優化和功能改進,熱衷於解決mysql疑難問題。課程亮點 你將獲得 前阿里資深技術...

MySql 實戰45講筆記 01

一般來說 mysql 分為server 層以及儲存引擎層兩部分 聯結器聯結器負責跟客戶端建立連線 獲得許可權 位置和管理連線。連線命令一般是這麼寫的。mysql h ip p port u user p輸完命令之後,你就需要在互動對話裡面輸入密碼。雖然密碼也可以直接跟在 p後面寫在命令列中,但這樣可...

MySQL實戰45講 事物隔離(筆記)

事務就是要保證一組資料庫操作,要麼全部成功,要麼全部失敗。在 mysql 中,事務支援是在引擎層實現的。innodb支援事務。隔離得越嚴實,效率就會越低。在實現上,資料庫裡面會建立乙個檢視,訪問的時候以檢視的邏輯結果為準。在 mysql 中,實際上每條記錄在更新的時候都會同時記錄一條回滾操作。記錄上...