天天看点

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死锁