🗒️Day76 【概念解析】 Intention Lock
00 分钟
2023-12-6
2023-12-7
type
status
date
slug
summary
tags
category
icon
password

整理定义

在学习意向锁之前,我们先学习下 多粒度锁
💡
多粒度锁(英语:Multiple granularity locking,MGL)是一种用在数据库以及关系数据库的锁定方式。MGL常被用在两阶段锁定法(Two-phase locking)以确保可串行性(Serializability)。
意向锁(Intention Lock):意向锁是放置在资源层次结构的一个级别上的锁,以保护较低级别资源上的共享锁或排它锁。

复述展开

意向锁(Intention Locks)是一种在数据库系统中使用的锁,它们是一种表明事务打算在表的某些行上加锁的信号。在支持多粒度锁定(Multiple Granularity Locking, MGL)的数据库系统中,意向锁是非常重要的,因为它们允许锁系统在不同级别上有效地工作,例如表级别和行级别。

意向锁的种类

在 InnoDB 存储引擎中,有两种主要的意向锁:
  1. 意向共享锁(Intention Shared Lock, IS锁):事务想要在某个数据行上加共享锁之前,必须先在包含该行的表上加上 IS 锁。
  1. 意向排他锁(Intention Exclusive Lock, IX锁):事务想要在某个数据行上加排他锁之前,必须先在包含该行的表上加上 IX 锁。

意向锁的作用

意向锁的主要作用是为了在数据库中实现锁的兼容性和冲突检测。它们不会阻止其他事务对表中的行进行读取或写入,但是它们会阻止其他事务对整个表加排他锁,直到所有的意向锁都被释放。这样做的目的是为了在不同级别的锁之间提供一种协调机制。

意向锁的工作原理

当一个事务想要对一行数据进行操作时,它会根据操作的类型(读或写)在表上设置相应的意向锁。如果事务想要读取一行数据,它会设置一个 IS 锁;如果事务想要修改一行数据,它会设置一个 IX 锁。
其他事务在尝试对表加锁时会检查这些意向锁。例如,如果一个事务想要对整个表加一个排他锁,它必须等待直到所有的 IS 锁和 IX 锁都被释放。这是因为排他锁要求没有其他事务可以读取或写入表中的任何行。

意向锁的优势

意向锁的主要优势在于它们允许数据库系统在保持高并发的同时,维护一致性和隔离性。通过在表级别上设置意向锁,事务可以在不必检查表中每一行的锁状态的情况下,快速确定是否可以对表进行锁定。这大大减少了锁定检查的开销,提高了系统的整体性能。

理解体会

意向锁是数据库并发控制的一个重要组成部分,它们使得数据库能够在维护事务隔离性的同时,提供高效的锁定策略。通过在表级别上声明事务的意图,意向锁简化了锁兼容性的检查过程,并使得锁管理更加高效。虽然意向锁本身不会阻止对行的访问,但它们是实现行级锁定和表级锁定协调的关键机制。
X
IX
S
IS
X
冲突
冲突
冲突
冲突
IX
冲突
兼容
冲突
冲突
S
冲突
冲突
兼容
兼容
IS
冲突
冲突
兼容
兼容
如果想更深入MGL可以参考
 

参考

📌
快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
 
上一篇
Day77【概念解析】Gap Lock
下一篇
Day75【概念解析】共享锁和排他锁

评论
Loading...