标签:isp 常见 不同的 nsa pap ble 文章 数据库 有向无环图
看了前几篇随笔,感觉有点翻译的味道,以后我尽量避免。
这次我们要看的是关于数据库的并行控制的paper,是1976年的老文章了。这篇paper分为两个部分,第一部分介绍多粒度锁,讲的是在继承结构下的加锁方法,第二部分介绍关于多层级的isolation。
直觉上,排外锁(X)和共享锁(S)对于一个继承结构的数据系统(熟悉结构)是必须的。然而,这两种锁还不足以解决问题,比如有如下的结构。
假设我们已经给D加了J锁,此时我们想要给D加X锁可以直接加锁,显然是有问题的,这需要我们在加锁前先查看所有的祖先结点和子孙结点是否被加锁,这显然不合理。为此需要一种新的锁--意图锁(I),加在共享锁或排外锁的所有祖先结点上,意图锁包含一个tag,暗示子结点加的锁的类型。比如在J结点加锁前,需要依次给A、D结点加一个共享意图锁(IS),表示这个结点有子孙结点被加了共享锁,同样,如果一个结点加了排外锁,那么就要所有的祖先结点加一个排外意图锁(IX)。
以上的锁已经可以完成所有的情况要求,但是为性能考虑,还引入了一种锁--共享排他意图锁(SIX),即子孙结点既有S锁也有X锁。
锁的兼容关系如下表所示:
NL | IS | IX | S | SIX | X | |
NL | YES | YES | YES | YES | YES | YES |
IS | YES | YES | YES | YES | YES | NO |
IX | YES | YES | YES | NO | NO | NO |
S | YES | YES | NO | YES | NO | NO |
SIX | YES | YES | NO | NO | NO | NO |
X | YES | NO | NO | NO | NO | NO |
其中,NL为non-lock。
我们先介绍一个静态的继承结构的加锁过程,然后再介绍动态继承结构的加锁过程。
不管是树形结构,还是有向无环图(DAG),对一个结点加锁的步骤是相似的。S锁的祖先要加IS锁,X锁的祖先要加IX锁,释放锁的时候需要从末端到顶端释放锁。
加锁的结构经常会有删除和插入操作,所以需要提供一种解决的机制。
简单的说,需要修改的旧结点和需要增加的新结点都要加X锁。对于数据库来说,这种情况最常见于带有索引的表的操作。
比如有一个银行账户的表,以用户所在地建立索引。如果我们想修改某个用户的账号余额,因为账号余额没有索引,所以可以直接修改(通过给自己加X锁和给祖先结点加IX锁)。如果要更改银行账户的地址,我们需要在索引和记录之间加一层索引块结构(一个索引块内的所有索引值相同),那么就要同时锁住被修改的地址的索引块和修改后的地址索引块,再进行修改。
加锁还涉及到其它的问题:调度、锁转换、死锁等,这里我就不赘述了。
Consistency在不同的情境中有不同的定义,我们先明确在数据库中的定义:数据库内数据相互依赖的关系如果都成立,那么这个数据库就是consistent。
比如说,count_x的值是var中值等于x的数量,如果所有的count_x都满足这个要求,那么这个数据库就是consistent。
由多个原子操作组成的transaction执行过程中,不可避免的会产生暂时不一致性,借此将一致性分为四个等级。
Transaction T有四个要求(不一定全部符合):
满足1、2、3、4条件的一致性度为3,满足1、2、3条件的一致性度为2,满足1、2条件的一致性度为1,只满足1条件的一致性度为0。
为了提供的不同一致性特性,就需要提供不同等级的锁协议。锁的分类有多种标准,除了上面的章节提到过了排它锁和共享锁,根据锁的存在时长,还分为短期锁(只锁住单一的操作)和长期锁(锁住整个事务)。
对于不同等级的一致性,对应的锁协议如下:
一致性的需求来自多个事务通常有多个操作,每个事务操作同时运行时,需要避免事务间脏读。多个事务的执行顺序决定了最终所有事务运行的并行度。最简单有效的方法是一个事务所有的操作执行完,再执行另一个事务的所有事务(也就是所谓的serial)。
具体一个事务的并行度确定是个比较复杂的问题,读者现在可以停一下,尝试自己提出一个确定多个事务并行度的方法。
OK,接下来我们阐述并行度确定的算法。如果一个事务T需要的数据来自另一个事务T′的输出,那么T对T′存在依赖。依赖分为三种:<,<<,<<<,我们令a和a′为T的某个操作,意义如下:
或者 a是一个写操作,a′是一个读操作
或者 a是一个读操作,a′是一个写操作
或者 a是一个写操作,a′是一个读操作
这三种分别对应并行度3、并行度2、并行度1。根据两个事务间的依赖关系来决定事务的并行度。一般来说,如果多个事务可以serial,那么就可以根据其依赖关系确定每个事务的并行度。
红书推荐系列(六): Granularity of Locks and Degrees of Consistency in a Shared Data Base
标签:isp 常见 不同的 nsa pap ble 文章 数据库 有向无环图
原文地址:https://www.cnblogs.com/arch/p/13940850.html