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

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

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

例如:

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后 都去操作被另一个事务锁住的另一行
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部