死鎖大家應該不會陌生寡夹,互相占用對方資源牍蜂,互相等待釋放,從而產生惡性循環(huán)厚宰,在數(shù)據(jù)庫中當多個事務試圖以不同的順序來鎖定資源的時候巢价,就有可能出現(xiàn)死鎖問題,下面舉個簡單例子:
事務1:update ... where id=1
update ... where id=2
事務2:update ... where id=2
udpate ... where id=1
如果湊巧固阁,事務1,2都執(zhí)行完自己的第一條update語句,同時也鎖定該行數(shù)據(jù)城菊,進入第二條备燃,這時發(fā)現(xiàn)都有上鎖,那么就會彼此等待凌唬,這時候就會死鎖并齐。
InnoDB目前處理死鎖的方法是:將持有最少行級排它鎖的事務進行回滾操作(這是相對簡單死鎖回滾算法)