MySQL 表锁、行锁
warning:
这篇文章距离上次修改已过202天,其中的内容可能已经有所变动。
MySQL中的表锁和行锁是数据库管理系统用来控制并发访问的一种机制。
表锁:
特点:
- 开销小
- 不会出现死锁
- 锁粒度大,发生锁冲突的概率高
- 适合查询密集的表
使用:
在SQL中使用
LOCK TABLES
语句显式加锁,例如:LOCK TABLES table_name WRITE; -- 执行数据变更操作 UNLOCK TABLES;
行锁:
特点:
- 开销大
- 会出现死锁
- 锁粒度小,发生锁冲突的概率低
- 适合有大量数据更新和插入的表
使用:
- 默认情况下,InnoDB存储引擎自动加锁;
也可以手动锁定行记录,例如使用
SELECT ... FOR UPDATE
进行加锁:SELECT * FROM table_name WHERE condition FOR UPDATE;
在实际应用中,根据不同的需求选择合适的锁类型和粒度。对于InnoDB存储引擎,通常会优先考虑使用行锁来避免表级别的锁竞争。
评论已关闭