概述:
在并发访问数据库时,锁是一种重要的机制,用于确保数据的一致性和完整性。MySQL 提供了不同类型的锁,用于控制对数据的访问和修改。本文将介绍 MySQL 中常见的锁类型,并提供相应的示例代码。
- 共享锁(Shared Lock):
共享锁允许多个事务同时读取同一份数据,但不允许并发事务对数据进行修改。共享锁之间不会互相阻塞,多个事务可以同时持有共享锁。
示例代码:
-- 事务1
START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 LOCK IN SHARE MODE;
-- 执行读操作
COMMIT;
-- 事务2
START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 LOCK IN SHARE MODE;
-- 执行读操作
COMMIT;
- 排他锁(Exclusive Lock):
排他锁是一种独占锁,它阻止其他事务对数据进行读取或修改。只有一个事务可以持有排他锁,其他事务必须等待锁的释放才能继续操作。
示例代码:
-- 事务1
START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 FOR UPDATE;
-- 执行读写操作
COMMIT;
-- 事务2
START TRANSACTION;
SELECT * FROM table_name WHERE id = 1 FOR UPDATE;
-- 等待事务1释放锁
COMMIT;
- 行锁(Row Lock):<