Mysql行锁和表锁
warning:
这篇文章距离上次修改已过191天,其中的内容可能已经有所变动。
MySQL中的行锁和表锁是数据库管理系统用来控制并发访问的一种机制。
- 表锁:
- 特点:实现简单,开销小,适合查询。
- 在执行SQL时,对整个表加锁。
- 使用语句:
LOCK TABLES table_name [READ | WRITE]
,例如:LOCK TABLES my_table WRITE;
- 解锁语句:
UNLOCK TABLES;
- 行锁:
- 特点:只在必要时锁定行,适合并发写操作。
- 开销大,实现复杂,对性能有影响。
- 在SQL执行时,对涉及的行加锁。
- 注意:MySQL的InnoDB引擎支持行锁。
下面是使用表锁和行锁的简单例子:
表锁:
LOCK TABLES my_table WRITE;
-- 执行你的查询或更新操作
UNLOCK TABLES;
行锁:
START TRANSACTION;
SELECT * FROM my_table WHERE condition FOR UPDATE;
-- 执行你的更新操作
COMMIT;
注意:使用行锁时,需要在事务中,并且查询语句中使用FOR UPDATE
。这样其他事务才能看到加锁的行,并等待解锁后再进行操作。
评论已关闭