From 784e7a611a482a6ec6c26f98730ebface17fca32 Mon Sep 17 00:00:00 2001 From: HasanSANG <55458257+HasanSANG@users.noreply.github.com> Date: Sat, 2 Jul 2022 23:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=8C=E9=94=81=E6=B3=A8=E6=84=8F=E4=BA=8B?= =?UTF-8?q?=E9=A1=B9=E8=A1=A5=E5=85=85;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit where 后条件是普通索引仍然会触发锁表,5.7已做本地实验! --- docs/database/mysql/mysql-questions-01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/database/mysql/mysql-questions-01.md b/docs/database/mysql/mysql-questions-01.md index 8396b758..1574cefa 100644 --- a/docs/database/mysql/mysql-questions-01.md +++ b/docs/database/mysql/mysql-questions-01.md @@ -334,7 +334,7 @@ InnoDB 不光支持表级锁(table-level locking),还支持行级锁(row-level ### 行级锁的使用有什么注意事项? -InnoDB 的行锁是针对索引字段加的锁,表级锁是针对非索引字段加的锁。当我们执行 `UPDATE`、`DELETE` 语句时,如果 `WHERE`条件中字段没有命中索引或者索引失效的话,就会导致扫描全表对表中的所有记录进行加锁。这个在我们日常工作开发中经常会遇到,一定要多多注意!!! +InnoDB 的行锁是针对索引字段加的锁,表级锁是针对非索引字段加的锁。当我们执行 `UPDATE`、`DELETE` 语句时,如果 `WHERE`条件中字段没有命中唯一索引或者索引失效的话,就会导致扫描全表对表中的所有记录进行加锁。这个在我们日常工作开发中经常会遇到,一定要多多注意!!! 不过,很多时候即使用了索引也有可能会走全表扫描,这是因为 MySQL 优化器的原因。