You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL InnoDB下并发插入时BEFORE INSERT触发器执行顺序咨询

MySQL InnoDB BEFORE INSERT触发器并发执行机制:串行还是并行?

结论

针对同一表的并发INSERT操作,对应的BEFORE INSERT触发器是串行执行的,你的测试结果完全符合InnoDB的运行机制。

具体解释

  • 触发器是依附于INSERT语句所在的事务的,每个独立的INSERT请求都会触发一个事务(除非显式用事务包裹批量操作)。InnoDB为保证事务的隔离性和数据一致性,当多个事务并发操作同一表时,会通过行级锁(或必要时的表锁)控制访问顺序,导致事务串行执行。触发器作为事务的一部分,自然会跟着所属事务按顺序运行,不会并行执行。

  • 你在触发器中加入sleep()后,第一个事务的执行时长包含了sleep时间,第二个事务必须等第一个事务释放锁并完成后才能启动,所以总执行时长接近两个sleep时间的总和,这直观验证了串行执行的特性。

  • 补充:如果两条INSERT操作针对不同的表,且不存在任何锁冲突,对应的触发器可能会并行执行,但只要是同一表的并发写入,触发器必然是串行运行的。

内容的提问来源于stack exchange,提问作者Nitesh kumar Rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:10:18