mysql死鎖deadlock相關幾個系統變數innodb_lock_wait_timeout
前言
隨著對於mysql死鎖知識的進一步瞭解,發現與死鎖相關的幾個系統變數。下面梳理這幾個技術概念,便於更進一步掌握mysql死鎖的概念。這樣在出現一些複雜的死鎖問題時,也有助於更快速解決故障。
相關文章
mysql 5.6 performance schema分析診斷死鎖deadlock之一
如何使用mysql 5.6 information schema定位事務鎖資訊
innodb_deadlock_detect系統變數
-
mysql 5.7.15引入此係統變數,可取值有2個,分別為:off與on。
-
預設值為on,表明開啟互鎖檢測功能。
-
但是有運維經驗的同學或許碰到過,在一些高併發的資料庫,如果開啟了死鎖檢測,因為死鎖檢測程式會去檢測是否發現死鎖,則會導致資料庫效能下降,因為系統必須消耗資源用於定期檢測是否發生死鎖。
-
建議在高併發情況下,可以考慮關閉此功能。當然一般情況,保持預設值即可。
innodb_lock_wait_timeout系統變數
-
innodb_lock_wait_timeout只能用於innodb表的事務(不適用於myisam表,因此它只有表鎖,而無行鎖功能)。在發生鎖等
-
待時,到達指定的值,則提示鎖等待超時,自動回滾報 鎖超時 的當前SQL語句(注:不是事務),這樣的話,就會導致所屬事務的產生資料不一致。所以必須保證在讓整個事務回滾,這個由系統變數 innodb_rollback_on_timeout或者命令列選項--innodb-rollback-on-timeout控制。
-
innodb_lock_wait_timeout單位為秒,預設值為50秒。如果出現鎖超時,報錯資訊見下:
-
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
-
對於高併發的OLTP資料庫環境,建議減少innodb_lock_wait_timeout系統變數。你試想一下,如果鎖超時時間檢查一短,就可以提升併發度;而對於OLAP資料庫,可以考慮增加innodb_lock_wait_timeout系統變數,因為OLAP不需要很高的併發度,如果此值過低,鎖超時會話就可以等待其它持鎖會話完成,而不是馬上報錯回滾,畢竟每次更新的資料量極大,一回滾半天白作了。
-
如果啟用了innodb_deadlock_detect=on(預設值),則innodb_lock_wait_timeout不會起作用。因為啟用前者,一發現死鎖,馬上回滾某個死鎖事務。但如果配置innodb_deadlock_detect=off,則innodb_lock_wait_timeout會起作用,讓後者來控制死鎖的回滾。
mysql> show variables like '%innodb%lock%timeout%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
+--------------------------+-------+
1 row in set (0.00 sec)
培訓課件
聯絡方式
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2663372/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql鎖分析相關的幾個系統檢視MySql
- PostgreSQL死鎖相關SQL
- 關於 SAP HANA 資料庫的死鎖問題(deadlock)資料庫
- MySQL鎖相關MySql
- MySQL:一個死鎖分析 (未分析出來的死鎖)MySql
- MySQL:Innodb 一個死鎖案例MySql
- [作業系統]死鎖作業系統
- C++系統相關操作2 - 獲取系統環境變數C++變數
- 使用jstack檢測Java應用的死鎖(deadlock)狀態JSJava
- 剖析6個MySQL死鎖案例的原因以及死鎖預防策略MySql
- MySQL 死鎖和鎖等待MySql
- MySQL 持久化系統變數MySql持久化變數
- ORA-00060: Deadlock detected 模擬死鎖產生與解決方案
- 面試:什麼是死鎖,如何避免或解決死鎖;MySQL中的死鎖現象,MySQL死鎖如何解決面試MySql
- MySQL解決死鎖MySql
- MySQL死鎖問題MySql
- MySQL 死鎖解決MySql
- 推薦幾款MySQL相關工具MySql
- 鎖賦值給其他變數為什麼會死鎖呢?賦值變數
- MySQL死鎖系列-線上死鎖問題排查思路MySql
- MySQL中鎖的相關問題DTQUMySql
- Mysql 兩階段鎖和死鎖MySql
- mysql行鎖和死鎖檢測MySql
- Oracle undo保留時間的幾個相關引數Oracle
- MySQL全面瓦解13:系統函式相關MySql函式
- MySQL效能相關引數MySql
- 設定mysql 事務鎖超時時間 innodb_lock_wait_timeoutMySqlAI
- mysql死鎖最佳化MySql
- Mysql如何處理死鎖MySql
- MySQL列印死鎖日誌MySql
- MySQL:死鎖一例MySql
- MySQL 死鎖問題分析MySql
- MySQL:MTS和mysqldump死鎖MySql
- 【MySQL】死鎖案例之六MySql
- 【MySQL】死鎖案例之七MySql
- 【MySQL】死鎖案例之八MySql
- MySQL鎖等待與死鎖問題分析MySql
- ABAP面試題系列:寫一組會出現死鎖(Deadlock)的ABAP程式面試題