天天看點

MYSQL 死鎖

死鎖

一個例子就可以明白

-- 事務A

USE sql_store;
START TRANSACTION;
UPDATE products
SET property = 'xxx'
WHERE product_id = 1;

UPDATE orders
SET order_name = 'xxx'
WHERE order_id = 1;

COMMIT;      
-- 事務B

USE sql_store;
START TRANSACTION;
UPDATE orders
SET order_name = 'xxx'
WHERE order_id = 1;

UPDATE products
SET property = 'xxx'
WHERE product_id = 1;

COMMIT;      

事務A執行到 UPDATE orders 然後事務B開始執行了,這時候事務A必須得等事務B執行完,事務B執行到 UPDATE products,發現這條資料被事務A鎖住了,事務B就得等事務A執行完,這樣就會産生死鎖。

避免死鎖...

将事務按照相同的順序編寫...

簡化事務,縮短運作時長

上一篇: MySQL死鎖
下一篇: MySQL死鎖