0
我知道InnoDB可以檢測並解決行級的死鎖,但是當您使用LOCK TABLES
時會發生什麼?使用鎖表時InnoDB死鎖
由於某些原因,我發現它偶爾更容易鎖定整個表,而不是找出避免潛在死鎖的邏輯。
所以,讓我們假設你做的事:
LOCK TABLES tableA WRITE, tableB WRITE
現在,兩筆交易(T1
和T2
),同時嘗試這一點。出於某種原因,我們假設T1
無法獲得tableA
的鎖定,但可以獲得tableB
的鎖定。 然後T2
出現,得到tableA
鎖定,但不在tableB
(T1
有那個)。這兩個現在在等待對方。怎麼了?
- 這是如何授予鎖;不管
LOCK TABLES
指定的順序如何?如果不是,那麼這是不是意味着兩個相同的陳述永遠不會彼此僵化? - 有沒有辦法正確處理這個問題?它必須超時嗎?
根據手冊,它是沒關係交易中使用LOCK TABLES
,按指定的位置:https://dev.mysql.com/doc/refman/5.7/en/lock-tables-and-transactions.html
哦,是的,忘記了R/W部分(在我的問題中顯然)。很好,謝謝。 – nickdnk