从前有匹马叫代码
心若没有栖息的地方,到哪里都是流浪

死锁

一个例子就可以明白

-- 事务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执行完,这样就会产生死锁。

 

避免死锁...

 

将事务按照相同的顺序编写...

简化事务,缩短运行时长

 

posted on 2021-09-25 17:04  从前有匹马叫代码  阅读(35)  评论(0编辑  收藏  举报