From b44fb3eedf208b6bc34a30a673f8893c7de450e0 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 24 Jun 2026 18:47:58 +0800 Subject: [PATCH] pessimistic-transaction: clarify Point Get lock behavior for non-existing keys under different isolation levels (#21740) --- pessimistic-transaction.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pessimistic-transaction.md b/pessimistic-transaction.md index a009dae61d9c..f2b9a90200fe 100644 --- a/pessimistic-transaction.md +++ b/pessimistic-transaction.md @@ -76,7 +76,11 @@ BEGIN /*T! PESSIMISTIC */; - 如果 `Point Get` 和 `Batch Point Get` 算子没有读到数据,依然会对给定的主键或者唯一键加锁,阻塞其他事务对相同主键唯一键加锁或者进行写入操作。 -- 支持 `FOR UPDATE OF TABLES` 语法,对于存在多表 join 的语句,只对 `OF TABLES` 中包含的表关联的行进行悲观锁加锁操作。 + > **注意:** + > + > 此行为仅适用于[可重复读 (Repeatable Read)](/transaction-isolation-levels.md#可重复读隔离级别-repeatable-read) 隔离级别。在[读已提交 (Read Committed)](/transaction-isolation-levels.md#读已提交隔离级别-read-committed) 隔离级别下,`Point Get` 和 `Batch Point Get` 算子不会对不存在的键加锁。 + +- 支持 `FOR UPDATE OF TABLES` 语法,对于存在多表 join 的语句,只对 `OF TABLES` 中包含的表关联的行进行悲观锁加锁操作。 ## 和 MySQL InnoDB 的差异