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

MySQL技术问询:哪些DML语句会确切获取排他锁?UPDATE与DELETE是否仅二者?

MySQL中获取排他锁的DML语句及求证

一、会确切获取排他锁(X锁)的DML语句

以下基于InnoDB存储引擎(MySQL主流事务引擎):

  • INSERT:插入的新行会被加排他锁,防止其他事务修改/删除该行;若触发唯一键冲突,还会对冲突行加排他锁。
  • UPDATE:对匹配的目标行加排他锁,事务期间其他事务无法修改、删除这些行,也不能为其加共享锁(S锁)。
  • DELETE:对匹配的目标行加排他锁,事务期间其他事务无法操作这些行。
  • SELECT ... FOR UPDATE:这是加锁型查询(属于DML范畴的锁操作),会对匹配的行加排他锁,锁会持有到事务结束。
  • INSERT ... ON DUPLICATE KEY UPDATE:插入时若遇唯一键冲突,会先对冲突行加排他锁,再执行更新逻辑。

二、求证:DML语句里仅UPDATE和DELETE会获取排他锁?

答案是否定的。除了UPDATE和DELETE,上述的INSERT、SELECT ... FOR UPDATE、INSERT ... ON DUPLICATE KEY UPDATE等DML操作都会确切获取排他锁。

内容的提问来源于stack exchange,提问作者user19481364

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:01:13