事务的概念倒是很多书都有讲,但是没见过什么"X级锁协议"。搜了一下,只有某些博客和某些题库有这种说法。不要被这种说法迷惑了,找权威资料看是没错的。而最权威的就是论文了。
Granularity of Locks and Degrees of Consistency in a Shared Data Base
引用数619,可以看出是很权威的。
这篇论文前半讲了锁粒度,后半讲了一致性程度(顶端页码379页),然后给出了4个一致性级别的定义(380页),最后针对不同等级的一致性给出了相应的锁协议(382页)。
The lock protocols are:
Degree 3: transaction T observes degree 3 lock protocol if:
(a) T sets a long exclusive lock on any data it dirties.
(b) T sets a long share lock on any data it reads.
Degree 2: transaction T observes degree 2 lock protocol if:
(a) T sets a long exclusive lock on any data it dirties.
(b) T sets a (possibly short) share lock on any data it reads.
Degree I: transaction T observes degree 1 lock protocol if:
(a) T sets a long exclusive lock on any data it dirties.
Degree 3: transaction T observes degree 0 lock protocol if:
(a) T sets a (possibly short) exclusive lock on any data it
dirties.
所以,这个"X级锁协议"的说法,实际上是"针对X级一致性的锁协议"。实际上,数据库的ACID属性,都是围绕一致性(Consistency)的,原子性(Atomicity)和持久性(Durability)是为了保证数据总在某个一致的状态,而因为强一致性会导致很大的性能损失,所以做了妥协,把一致性划分为几个等级(degree of consistency),然后演变成了隔离性(Isolation)。
实际使用中,大部分数据库都是在可重复读级别,所以其他级别的讨论和资料都比较少。
书的话,当然是这本:
《事务处理:概念和技术》,就是上面那篇论文的作者Jim Gray大师写的,可以说是奠定关系数据库基础的书。可惜国内已经绝版,不过真想看的话也不是没办法。