有关 mysql 主键自增锁的问题应该如何解决?

2021-07-06 11:55:03 +08:00
 LeeReamond

如题,最近发现好像 mysql,innodb 主键自增表当中,如果并发插入超过一定数量就会死锁,有什么办法可以避免这点吗?

1047 次点击
所在节点    问与答
4 条回复
jj783850915
2021-07-06 12:41:23 +08:00
锁交叉才会死锁 看你的描述应当不会出现这种情况
3dwelcome
2021-07-06 13:46:34 +08:00
我以前遇到过 Java 莫名锁死的问题,百思不得其解。

最后查下来是 OutOfMemory, 服务器上把几个数据库内存预分配调小后,就莫名消失了。
zhangysh1995
2021-07-06 14:25:36 +08:00
应该不会死锁,文档写的锁了要等待:

AUTO-INC Locks
An AUTO-INC lock is a special table-level lock taken by transactions inserting into tables with AUTO_INCREMENT columns. In the simplest case, if one transaction is inserting values into the table, any other transactions must wait to do their own inserts into that table, so that rows inserted by the first transaction receive consecutive primary key values.
The innodb_autoinc_lock_mode variable controls the algorithm used for auto-increment locking. It allows you to choose how to trade off between predictable sequences of auto-increment values and maximum concurrency for insert operations.

可以发一下详细的死锁信息大家看看。

ps: https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html
zhangysh1995
2021-07-06 14:26:28 +08:00
另外,有个 mysql 专区

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

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

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

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

© 2021 V2EX