死鎖檢測和回滾 |
發布時間: 2012/8/24 17:34:17 |
InnoDB自動檢測事務的死鎖,并回滾一個或幾個事務來防止死鎖。InnoDB試著挑選小事務來回滾,事務的大小通過被插入、更新或刪除的行的數量來確定。
如果innodb_table_locks=1 (1是默認值),InnoDB意識到表鎖定,其上的MySQL層知道row-level鎖定。另外InnoDB不能在MySQL LOCK TABLES設定表鎖定的地方或者涉及InnoDB之外的存儲引擎設置鎖定的地方檢測死鎖。你必須通過設定innodb_lock_wait_timeout系統變量的值來解決這些情況。 當InnoD執行完全的事務回滾之時,該事務的所有鎖定被釋放。盡管如此,如果單個SQL語句被因為錯誤的原因被回滾,該SQL語句設定的部分鎖定可能被保留。這是因為InnoDB以一種方式存儲行鎖定,在這種方式中它不能知道隨后的哪個鎖定是被哪個SQL語句設定的。 本文出自:億恩科技【www.vbseamall.com】 |