两种锁的类型
- 共享锁(shared lock)也叫读锁(read lock):
- 读锁是共享的,也就是说互相不阻塞
- 排他锁(exclusive lock)也叫写锁(write lock):
- 写锁是排他的,也就是说一个写锁会阻塞其他的写锁和读锁
:::info
锁的各种操作,包括获得锁、检查锁是否已经解除、释放锁等,都会增加系统的开销。**所以,为了提高共享资源的并发性,就是尽量只锁定需要修改的部分数据,而不是所有资源。
所谓的锁策略,就是在锁的开销和数据的安全性之间寻求一种平衡。**
:::
两种锁的策略
- 表锁(table lock)
- 锁定整张表,是开销最小的策略
- 写锁比读锁的优先级更高一些
- 服务器会为类似
Alter Table
的操作使用表锁,而忽略存储引擎的锁机制
- 行级锁(row lock)
- 可以最大程度支持并发处理,同时开销也要大一些
- 行级锁只在存储引擎层实现,MySQL服务器层没有实现
:::info 每种MySQL的存储引擎都可以实现自己的锁策略和锁粒度 :::
参考书籍:《高性能MySQL(第3版)》