6. 锁
2020-05-07 本文已影响0人
lsh的学习笔记
注意:这里只讨论InnoDB引擎中的 Lock 类型的锁,不包括 latch锁。
只有当实现本身会增加开销时,行级锁才会增加开销。
InnoDB存储引擎不需要锁升级,因为一个锁和多个锁的开销是相同的。
行锁
分类
- 共享锁(S lock):允许事务
读一行数据。 - 排他锁(X lock):允许事务
删除或更新一行数据。
兼容性
X锁与任何的锁都不兼容,而S锁仅和S锁兼容。
兼容性
意向锁
含义
意向锁(IntentionLock)是将锁定的对象分为多个层次,意向锁意味着事务希望在更细粒度(finegranularity)上进行加锁。
InnoDB存储引擎支持意向锁设计比较简练,其意向锁即为表级别的锁。
设计目的
主要是为了在一个事务中揭示下一行将被请求的锁类型。
分类
支持两种意向锁:
- 意向共享锁(ISLock),事务想要获得一张表中
某几行的共享锁 - 意向排他锁(IXLock),事务想要获得一张表中
某几行的排他锁
对最细粒度的对象进行上锁,那么首先需要对粗粒度的对象上锁。
兼容性
由于InnoDB存储引擎支持的是行级别的锁,因此意向锁其实不会阻塞除全表扫描以外的任何请求。
兼容性