MySQL 锁的类型
共享锁和排他锁
读锁是共享的。
加锁:SELECT * FROM table WHERE id=1 LOCK IN SHARE MODE
释锁:COMMIT/ROLLBACK
写锁是排他的。
DELETE/ UPDATE/ INSERT -- 加锁
SELECT * FROM table WHERE ... FOR UPDATE -- 加锁
COMMIT/ROLLBACK -- 释锁
ALTER TABLE
表锁和行锁
表锁会锁定整张表并且阻塞其他用户对该表的所有读写操作,比如 alter 修改表结构的时候会锁表。
行锁又可以分为乐观锁和悲观锁:
悲观锁可以通过 for update 实现。
乐观锁则通过版本号实现。
最后更新于