mysql 死锁问题

发布于 2022-09-12 02:15:18 字数 286 浏览 33 评论 0

我首先开启了一个事务查询并加排他锁
image.png
然后试了下另外一个查同样id 的事务是成功的
image.png
但是仅单条或者不commit就是锁等待
image.png
不是应该只要是查询同一条数据有排他锁就会死锁嘛

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撩人痒 2022-09-19 02:15:18

死锁是两个事务或多个事务在同一资源上相互占用,并请求锁定对方占用的资源。
你这里仅仅是一个事务占用了另一个事务的资源,没有实现双方互相占用,这不会产生死锁。
你可以这样试一下。

-- transaction1
begin;
update test_info set name="123" where id=1;
update test_info set name="321" where id=2;

-- tansaction2
begin;
update test_info set name="111" where id=2;
update test_info set name="222" where id=1;

两个事务都执行第一条update语句,当再都执行第二条update时,双方都在等待对方释放锁资源,才能update数据行,由此就会产生死锁。

过潦 2022-09-19 02:15:18

我不懂你执行第二条语句是怎么成功的,id=3已经被第一个事务上行锁了,理论上你的第二个语句是被堵塞的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文