mysq的dead锁为什么是对两张表操作才会产生?单表对不同行操作为什么不会产生?

_乌托邦 发布于 03/15 10:03
阅读 31
收藏 0

例如:

START TRANSACTION;
update a
set name = 1
where id = 1;
sleep(10);
update a
set name = 2
where id = 2;
commit;
START TRANSACTION;
update a
set name = 2
where id = 2;
sleep(10);
update a
set name = 1
where id = 1;
commit;

快速执行这两条SQL为什么不会产生? 

加载中
0
紫衫青衣

update是行级锁

_
_乌托邦
对啊,第一个事务 锁住了 id为1的一行 , 第二个事务锁住了 id为2的一行 休眠10s后 都去操作被另一个事务锁住的另一行
返回顶部
顶部