两种锁的类型

  • 共享锁(shared lock)也叫读锁(read lock):
    • 读锁是共享的,也就是说互相不阻塞
  • 排他锁(exclusive lock)也叫写锁(write lock):
    • 写锁是排他的,也就是说一个写锁会阻塞其他的写锁和读锁

:::info 锁的各种操作,包括获得锁、检查锁是否已经解除、释放锁等,都会增加系统的开销。**所以,为了提高共享资源的并发性,就是尽量只锁定需要修改的部分数据,而不是所有资源。
所谓的锁策略,就是在锁的开销和数据的安全性之间寻求一种平衡。** :::

两种锁的策略

  • 表锁(table lock)
    • 锁定整张表,是开销最小的策略
    • 写锁比读锁的优先级更高一些
    • 服务器会为类似 Alter Table 的操作使用表锁,而忽略存储引擎的锁机制
  • 行级锁(row lock)
    • 可以最大程度支持并发处理,同时开销也要大一些
    • 行级锁只在存储引擎层实现,MySQL服务器层没有实现

:::info 每种MySQL的存储引擎都可以实现自己的锁策略和锁粒度 :::


参考书籍:《高性能MySQL(第3版)》