死鎖檢測和回滾 |
發(fā)布時間: 2012/8/24 17:34:17 |
InnoDB自動檢測事務(wù)的死鎖,并回滾一個或幾個事務(wù)來防止死鎖。InnoDB試著挑選小事務(wù)來回滾,事務(wù)的大小通過被插入、更新或刪除的行的數(shù)量來確定。
如果innodb_table_locks=1 (1是默認(rèn)值),InnoDB意識到表鎖定,其上的MySQL層知道row-level鎖定。另外InnoDB不能在MySQL LOCK TABLES設(shè)定表鎖定的地方或者涉及InnoDB之外的存儲引擎設(shè)置鎖定的地方檢測死鎖。你必須通過設(shè)定innodb_lock_wait_timeout系統(tǒng)變量的值來解決這些情況。 當(dāng)InnoD執(zhí)行完全的事務(wù)回滾之時,該事務(wù)的所有鎖定被釋放。盡管如此,如果單個SQL語句被因為錯誤的原因被回滾,該SQL語句設(shè)定的部分鎖定可能被保留。這是因為InnoDB以一種方式存儲行鎖定,在這種方式中它不能知道隨后的哪個鎖定是被哪個SQL語句設(shè)定的。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |