关于 MySQL 死锁的疑问

2021-09-02 18:28:09 +08:00
 ddllzz

不使用事务就不会出现死锁吗?

950 次点击
所在节点    问与答
8 条回复
liprais
2021-09-02 18:31:57 +08:00
你是如何做到不使用事务的?
Euthpic
2021-09-02 23:25:19 +08:00
@liprais 不用 innodb 咯
ddllzz
2021-09-02 23:30:17 +08:00
@liprais 啊,没开启事务不就是不使用吗?

有些定时统计的任务,如果确保了幂等性,那即使某次统计出现偶发的异常,且没有回滚,在下一次定时任务正常执行之后,也能得到正确的数据。

现在的问题是,多线程下,没有开启事务,却偶尔会出现死锁。是不是一条更新语句,会执行很多个加锁动作,导致了死锁?
ddllzz
2021-09-02 23:31:42 +08:00
@Euthpic 用了 InnoDB 没开启事务,也是有事务的吗
mikulch
2021-09-03 00:01:50 +08:00
@ddllzz 不是的,事务必须要靠你自己开启。
至于死锁的问题,理论上来说不用事务的话,确实不太可能造成死锁,除非你数据库扛不住了出现问题。
ddllzz
2021-09-03 00:08:04 +08:00
@mikulch 嗯嗯,感谢解答
Euthpic
2021-09-03 00:30:57 +08:00
@ddllzz innodb 每个提交都是以事务为单位,你写一条简单的 select 也会开隐式事务的
ddllzz
2021-09-03 01:10:10 +08:00
@Euthpic #7 涨知识了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX