共享锁(读锁) shared (S) lock
读取操作创建的锁
- 允许多个事务同时读取数据 (锁兼容)
- 任何事务都不能对数据进行修改 (即获取排他锁), 直到已释放所有共享锁
排他锁 (写锁) exclusive (X) lock
- 如果事务T对数据A加上排他锁后, 则其他事务不能再对A加任任何类型的锁
- 获得排他锁的事务既能读数据,又能修改数据。
# 共享锁 可以在 MySQL 5.7 和 MySQL 8.0 中使用
SELECT ... LOCK IN SHARE MODE;
# 共享锁 可以在 MySQL 8.0 中使用
SELECT ... FOR SHARE;
# 排他锁
SELECT ... FOR UPDATE;