更新数据的时候必然加独占锁,独占锁和独占锁是互斥的,此时别人不能更新;但此时你要查询,默认是不加锁的,(但有mvcc保证),但是查询可以手动加共享锁(select * from table_name lock in share mode),共享锁和独占锁(select * from table_name for update)是互斥的,但共享锁和共享锁不互斥。
表锁
1. 表锁
lock tables xxx Read: 表级共享锁
lock tables xxx WRITE: 表级独占锁
# 这在业务中有什么用么?
2. 表级的意向锁
如果有事务在表里进行 增删改 操作,那么在 行级 会加独占锁,同时会在表级加一个 意向独占锁
如果有事务在表里执行 查 操作,那么会在表级加一个 意向共享锁