MySQL 行锁

在 MySQL 中,行锁是锁定表中的某些行,而不是锁定整个表或整个表的一部分。使用行级锁定可以提高多用户环境下的并发处理能力。下面是一个行锁的示例:

假设有一个用户表(user),它包含两个字段:id 和 name。现在有两个事务分别对该表中的一些行进行操作。一个事务要删除 id = 1 的行,另一个事务要更新 id = 2 的行。如果没有行级锁,那么这两个事务可能会相互干扰,导致数据的不一致性。

使用行级锁可以避免这种情况。例如,可以使用以下 SQL 语句锁定 id = 1 的行:

SELECT * FROM user WHERE id = 1 FOR UPDATE;

这个 SQL 语句将锁定 id = 1 的行,直到事务完成为止。因此,在同一时刻,其他事务不能对该行进行任何操作。同样,可以使用以下 SQL 语句锁定 id = 2 的行:

SELECT * FROM user WHERE id = 2 FOR UPDATE;

通过行级锁,这两个事务可以安全地并发执行,不会相互干扰。