說,我有 2 個連接,它們正在執行以下代碼。它會導致死鎖嗎?
connection 1-> lock tables A write, B write;
connection 2-> lock tables B write, A write;
uj5u.com熱心網友回復:
您可以通過LOCK TABLES A WRITE, B WRITE;在兩個連接中使用來消除死鎖的風險。這是原子的,所以第二個連接會等待。
如果您不使用LOCK TABLES,則存在死鎖的風險。
在某些情況下,即使是單個 SQL 陳述句也可能會死鎖。我們在我目前的作業場所經常看到這種情況,例如,如果一張表有多個主鍵或唯一鍵。例如:
CREATE TABLE MyTable (
id INT AUTO_INCREMENT PRIMARY KEY,
x INT,
UNIQUE KEY (x)
);
MySQL 似乎有一個允許死鎖的設計缺陷,因為獲取多個唯一鍵上的鎖的陳述句不是原子的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/342397.html
下一篇:MySQLCHAR_LENGTH(str)在與不同的字符集介紹器一起使用時,有時會為相同的字串文字產生不同的輸出
