【请关注】MySQL 中常见的加锁方式及各类锁常见问题及对应的解决方法
一、MySQL 中常见的加锁方式:
1. 表锁(Table Lock)
- 存储引擎:MyISAM(默认)、Memory。
- 特点:锁定整张表,并发性能低,适合读多写少场景。
- 语法:
-- 手动加表锁(共享锁)
LOCK TABLES table_name READ;
-- 手动加表锁(排他锁)
LOCK TABLES table_name WRITE;
- 释放:执行 UNLOCK TABLES; 或会话结束自动释放。
2. 行锁(Row Lock)
- 存储引擎:InnoDB(默认)。
- 特点:锁定单行数据,并发性能高,通过索引精准锁定行。
- 类型:
- 共享锁(S锁):允许事务读数据,其他事务可加S锁但不能加X锁。
SELECT * FROM table_name WHERE id=1 LOCK IN SHARE MODE; -- 手动加S锁
- 排他锁(X锁):禁止其他事务读写数据。
SELECT * FROM table_name WHERE id=1 FOR U