分布式数据库的并发控制读书报告
分布式数据库中的事务管理与并发控制研究

分布式数据库中的事务管理与并发控制研究在当今信息技术高速发展的背景下,分布式数据库的应用日益广泛。
然而,分布式数据库面临着许多挑战,其中之一就是如何进行有效的事务管理和并发控制。
本文将重点研究分布式数据库中的事务管理和并发控制问题,并探讨当前的研究状况和未来发展趋势。
1. 事务管理事务是数据库操作的最小单位,它是一组数据库操作的集合,要么全部执行成功,要么全部回滚。
在分布式数据库中,由于数据分布在多个节点上,事务管理更加复杂。
主要的事务管理技术包括两阶段提交(Two-Phase Commit,2PC)、三阶段提交(Three-Phase Commit,3PC)和乐观并发控制(Optimistic Concurrency Control,OCC)。
2. 两阶段提交(2PC)2PC是一种常见的分布式事务管理协议,它通过协调器和参与者的交互来确保分布式事务的一致性。
首先,协调器向所有参与者发送准备请求,并等待它们的回复。
如果所有参与者都准备好了,协调器发送提交请求,否则发送中止请求。
然后,所有参与者执行相应的操作,完成后向协调器发送决策报告。
最后,协调器根据收到的决策报告判断是否提交事务。
2PC的主要问题是在协调器失效的情况下可能导致事务长时间阻塞。
3. 三阶段提交(3PC)为了解决2PC中的长时间阻塞问题,3PC在协议中引入了一次prepare阶段。
与2PC不同的是,3PC在prepare阶段引入了超时机制。
如果某个参与者超时,它将无法接收到协调器的提交请求,并进行回滚。
这样可以避免长时间阻塞,但是在网络不稳定的情况下仍然可能导致事务无法提交,丧失了完全一致性。
4. 乐观并发控制(OCC)OCC是一种轻量级的并发控制方法,它不需要显式的锁机制,而是基于版本控制实现。
每个事务在读取数据时都会获取一个版本号,并在提交时检查数据是否被其他事务修改,如果是,则回滚。
OCC的优势在于降低了锁开销和死锁风险,但在高并发和冲突频繁的场景中可能导致回滚的次数过多,影响性能。
分布式数据库系统中的事务管理与并发控制

分布式数据库系统中的事务管理与并发控制分布式数据库系统是由多个计算机和存储设备组成的系统,数据被分布在不同的节点上。
由于数据分散在各个节点上,事务管理与并发控制在分布式数据库系统中变得尤为重要。
本文将探讨事务管理和并发控制在分布式数据库系统中的重要性、挑战和解决方案。
事务管理是指确保数据库操作的一致性和原子性的过程。
在分布式环境中,由于多个节点之间存在网络延迟和不可靠性,事务管理变得更加复杂。
首先,分布式数据库系统需要处理事务的提交和回滚操作。
当一个事务涉及到多个节点时,需要保证所有节点的操作要么全部提交成功,要么全部回滚。
为了实现这个目标,可以使用两阶段提交(Two-Phase Commit,2PC)协议。
2PC协议通过协调器节点来管理事务的提交和回滚。
它首先向所有参与节点发送准备提交请求,如果所有节点都可以提交,则再向所有节点发送最终提交请求。
如果任何一个节点无法提交,则向所有节点发送回滚请求。
尽管2PC协议可以保证事务的一致性,但是它也存在着阻塞和单点故障的问题。
为了解决这些问题,可以使用多阶段提交(Multi-Phase Commit,MPC)协议。
MPC协议通过将事务分成多个阶段,并使用多个协调器节点来处理提交和回滚操作,从而减少了阻塞和故障的可能性。
其次,分布式数据库系统还需要处理并发事务之间的冲突。
在一个节点上并行执行多个事务时,可能会出现冲突的情况。
例如,两个事务同时修改相同的数据项,可能导致数据的不一致。
为了解决这个问题,可以使用锁机制来实现并发控制。
锁可以分为共享锁和排他锁。
共享锁允许多个事务同时读取相同的数据项,但是不允许其他事务修改该数据项。
排他锁只允许一个事务同时读取和修改数据项。
通过在事务执行之前获取所需的锁,并在事务完成后释放锁,可以确保并发事务之间的一致性。
然而,仅仅依靠锁来处理并发事务存在着性能瓶颈的问题。
为了提高系统的并发性能,可以使用乐观并发控制(Optimistic Concurrency Control,OCC)技术。
分布式数据库的并发控制与事务处理(系列十)

分布式数据库的并发控制与事务处理:实现数据一致性与可靠性引言:分布式数据库是现代大数据处理的重要组成部分,它的核心挑战之一就是如何在分布式的环境下实现并发控制与事务处理,以保证数据的一致性与可靠性。
本文将就这一主题展开论述,并探讨现有的一些解决方案。
1. 分布式数据库的并发控制在多节点的分布式数据库中,多个事务同时对数据库进行读写操作,如果不加以控制,就会产生一系列的并发问题,如丢失更新、不可重复读、脏读等。
因此,必须采取并发控制策略来保证数据的一致性。
锁机制锁机制是最常见也是最传统的并发控制方式之一。
它通过在事务操作时给需要读写的数据对象加锁,来保证事务的隔离性。
常见的锁机制包括共享锁和排他锁,前者用于读操作,后者用于写操作。
然而,在分布式环境下,锁机制的实现变得复杂,因为需要考虑不同节点之间的同步与协调。
乐观并发控制乐观并发控制是另一种常见的并发控制策略,它基于假设冲突很少发生的原则。
在乐观并发控制中,事务执行时不会对数据对象加锁,而是通过版本号或时间戳等机制来判断数据是否发生冲突。
一旦发生冲突,事务就会进行回滚并重新执行。
乐观并发控制适用于读多写少的场景,并且可以提高并发性能。
2. 分布式数据库的事务处理事务处理是分布式数据库中保证数据可靠性的关键手段。
事务是一组逻辑上有关联的数据库操作,它要么全部执行成功,要么全部回滚到初始状态,不允许部分成功部分回滚。
分布式环境下的事务处理相比于单节点的数据库,面临着更大的挑战和复杂性。
两阶段提交协议两阶段提交协议是一种用于分布式事务处理的经典算法。
它通过协调各个参与节点的执行过程,保证所有节点要么全部执行提交,要么全部执行回滚。
该协议的核心思想是将事务的执行分为准备阶段和提交阶段,并通过协调者节点来确保所有参与节点的一致性。
然而,两阶段提交协议存在阻塞和单点故障等问题,影响了性能和可靠性。
其他分布式事务处理方案针对两阶段提交协议的不足,研究者们提出了一系列的改进与替代方案。
第5章分布式数据库中的并发控制

1 并发控制的概念和理论
1.2 事务可串行化理论
例子
• 两个事务,定义如下:
T1: 1. Read(x) 2. x=x+10 3. Write(x) 4. Read(y) 5. y=y-15 6. Write(y) 7. commit
T2: 1. Read(x) 2. x=x-20 3. Write(x) 4. Read(y) 5. y=y*2 6. Write(y) 7. commit
S2的优先图
T1
S3的优先图
T1
S4的优先图 S5的优先图
T1
T1
X Y X Y X YX YX Y
T2
T2
T2
T2
T2
存在环路
1 并发控制的概念和理论 1.3 分布式事务的可串行化调度测试
举例
• 考虑如下3个事务:
T1: Read(x); Write(x); Commit; T2: Write(x); Write(y); Read(z); Commit; T3: Read(x); Read(y); Read(z); Commit;
1 并发控制的概念和理论
1.2 事务可串行化理论
• 有以下推论:
– 一个可串行化调度必定与某个串行调度等价, 且是一致性调度
– 一致性调度不一定是可串行化调度 – 同一事务集几个可串行化调度,他们的结果未
必相同
1 并发控制的概念和理论 1.3 分布式事务的可串行化调度测试
优先图 P(S)
• 调度 S 的优先图是一个有向图G(N,E) ,其中 – N: 一组节点N={T1T2,…,Tn}, S中的事务 – E: 一组有向边E={e1,e2,…,en}, Ti Tj 是图中的 一条边,当且仅当 p Ti, q Tj 使得p, q 冲突, 并且 p <S q
分布式数据库的并发控制与事务处理

分布式数据库的并发控制与事务处理随着互联网的快速发展和数据量的快速增长,分布式数据库成为了处理海量数据的重要工具。
在分布式数据库中,数据存储在多个节点上,这为并发控制和事务处理带来了挑战。
本文将讨论分布式数据库的并发控制和事务处理的相关问题,以及解决这些问题的一些方法和技术。
一、分布式数据库的并发控制在分布式数据库中,由于数据存储在多个节点上,可能会发生多个事务同时对相同数据进行读写操作的情况,这就需要进行并发控制,以保证数据的一致性和完整性。
1. 乐观并发控制乐观并发控制是一种基于冲突检测的方法,它假设事务之间的冲突是较少的。
在乐观并发控制中,事务在读取数据时不会对数据进行锁定,只有在提交时才会进行冲突检测。
如果发现有冲突,就需要回滚事务并重新执行。
这种方式可以提高并发性能,但是在冲突较多的情况下可能会导致事务的频繁回滚和重复执行。
2. 悲观并发控制悲观并发控制是一种基于锁的方法,它假设事务之间的冲突是较多的。
在悲观并发控制中,事务在读取数据时会对数据进行锁定,直到事务提交或回滚之前其他事务无法访问该数据。
悲观并发控制可以确保数据的一致性,但是会降低并发性能,并且容易出现死锁情况。
3. 混合并发控制混合并发控制是一种综合了乐观和悲观并发控制的方法,它根据不同的访问模式和数据冲突的概率选择合适的并发控制策略。
例如,在读多写少的情况下可以采用乐观并发控制,而在写多读少的情况下可以采用悲观并发控制。
混合并发控制可以兼顾并发性能和数据一致性的要求。
二、分布式数据库的事务处理在分布式数据库中,由于数据存储在多个节点上,事务的处理需要考虑节点之间的通信和数据一致性的问题。
1. 分布式事务分布式事务是指涉及多个节点的事务操作。
为了保证分布式事务的原子性、一致性、隔离性和持久性(ACID特性),需要使用一些协议和技术。
常用的分布式事务协议包括两阶段提交协议和三阶段提交协议。
这些协议通过协调各个节点的事务操作,以确保分布式事务的一致性和完整性。
探究分布式系统中的并发控制技术

探究分布式系统中的并发控制技术随着信息技术的飞速发展,大数据、云计算、物联网等前沿领域的兴起,要处理的数据量不断增大,单一主机已经无法满足需求,分布式系统(Distributed System)应运而生。
分布式系统通过多个计算机节点的协作工作,实现对巨量数据的快速处理,同时提高了系统的可靠性和可扩展性。
然而,在分布式系统中,由于多个节点之间的协作工作,会出现异步更新的情况,那么如何保持数据的一致性呢?这就需要用到并发控制技术。
分布式系统中的并发控制技术,主要是为了解决多个用户并行访问共享数据可能造成的冲突问题,确保数据的一致性。
下面,我们来深入探究一下分布式系统中的并发控制技术。
一、基本概念1.事务(Transaction)事务是指一个用户请求序列,这些请求操作被视为一个不可再分割的工作单元。
对于一个事务来说,要么全部执行成功,要么全部执行失败。
例如,银行客户向银行账户存款和取款时,这两个操作应该是一个不可再分割的工作单元,如果存款成功但取款失败,系统应该回滚该事务,让存款也失败。
2.锁(Lock)锁是指一种机制,能防止两个用户同时对同一共享资源进行修改造成数据的冲突。
当一个用户需要访问一个共享资源时,它需要先获取锁,执行完操作之后再释放锁。
例如,当两个用户同时对同一张银行卡进行操作时,如果没有锁的机制,可能会造成银行账户余额错误的情况,而加入锁的机制后,会让它们依次操作,保证数据的正确性。
二、并发控制技术1.乐观并发控制(Optimistic Concurrency Control)乐观并发控制的核心思想是,允许多个事务同时更改数据,但在数据提交之前,检查每个事务是否产生了冲突。
如果发现了冲突,系统可以取消其中一个事务,让另一个事务提交。
这种方法是一种不加锁的机制,不会阻止到数据的并发修改。
优点:与悲观并发控制相比,乐观并发控制不会对数据的修改进行锁定,这种方法更适用于对干预小的业务(比如读多写少的场景),由于没有锁的占用,可以提高系统的并发度和吞吐量。
分布式数据库的并发控制与事务处理(系列五)

分布式数据库的并发控制与事务处理在当今互联网时代,数据作为一个公司最重要的资产之一,如何高效地管理和处理数据成为了每个企业亟需解决的问题。
分布式数据库作为解决方案的一种,在企业中的应用越来越广泛。
然而,分布式数据库面临的并发控制和事务处理问题也日益凸显。
一、并发控制并发控制是分布式数据库中的一个重要难题。
在一个分布式环境下,可能有多个用户同时对数据库进行读和写操作,在没有合适的并发控制机制的情况下,可能会导致数据冲突和一致性问题。
为了解决并发控制问题,通常采用锁机制。
锁机制可以分为共享锁和排他锁,通过给数据对象加锁来控制并发操作的执行顺序和互斥性。
共享锁和排他锁可以在读写操作之间进行切换,从而实现数据的一致性。
然而,传统的锁机制可能存在锁粒度过大、死锁等问题。
为了解决这些问题,分布式数据库引入了更加灵活和高效的并发控制机制,如多版本并发控制(MVCC)和时间戳(Timestamp)。
二、事务处理事务处理是分布式数据库中另一个重要的问题。
事务是一组操作的逻辑单元,它要么全部执行成功,要么全部失败回滚。
分布式环境下的事务处理需要保证事务的原子性、一致性、隔离性和持久性。
为了保证事务的原子性和持久性,分布式数据库通常采用两阶段提交(2PC)协议。
2PC协议包括准备阶段和提交阶段,通过协调器和参与者之间的通信,保证所有参与者都同意提交或者回滚事务。
对于事务的隔离性,分布式数据库采用了不同级别的隔离级别,如读未提交、读已提交、可重复读和串行化。
不同的隔离级别对事务的并发性能和数据一致性有不同的影响,需要根据具体业务场景进行选择。
三、分布式数据库的挑战尽管分布式数据库在并发控制和事务处理方面取得了一系列的成果,但仍然面临一些挑战。
首先,分布式数据库需要解决数据复制和一致性问题。
在一个分布式环境下,可能有多个数据副本分散在不同的节点上,如何保证数据的一致性成为一个关键问题。
其次,分布式数据库需要解决网络延迟和节点故障等问题。
分布式数据库系统中的事务管理与并发控制

分布式数据库系统中的事务管理与并发控制随着云计算和大数据时代的到来,分布式数据库系统已经成为了处理大规模数据的关键技术之一。
在分布式数据库系统中,事务管理和并发控制是至关重要的问题。
本文将探讨分布式数据库系统中的事务管理和并发控制的挑战和解决方案。
1. 事务管理事务是指数据库操作的逻辑单元,具有原子性、一致性、隔离性和持久性(ACID)四个特性。
在分布式数据库系统中,事务管理面临着多个节点间的通信和协调问题。
为了确保分布式数据库中的事务能够正确执行和恢复,需要采取一系列的策略和机制。
首先,分布式数据库系统中的事务管理需要保证所有节点执行的操作是原子的。
为了实现原子性,可以使用两阶段提交(Two-phase Commit,2PC)协议。
在2PC协议中,事务的提交需要经过两个阶段,首先进行准备阶段,所有节点需要决定是否可以提交事务,然后进行提交阶段,所有节点同时提交或回滚事务。
2PC协议可以确保所有节点在提交事务时的一致性。
其次,分布式数据库系统中的事务管理需要保证事务的隔离性。
由于分布式数据库系统中存在多个节点并行执行事务的情况,可能会出现读-写和写-写冲突。
为了解决这些冲突,可以使用并发控制机制。
常见的并发控制方法包括基于锁的机制和基于时间戳的机制。
基于锁的机制通过给予事务锁来确保事务的隔离性,而基于时间戳的机制则通过为每个事务分配时间戳来判断事务的顺序和冲突。
最后,分布式数据库系统中的事务管理需要保证事务的持久性。
持久性是指事务一旦提交,对数据库的修改就会永久保存。
为了实现持久性,可以使用日志恢复机制。
在分布式数据库系统中,每个节点都会维护一个本地日志,用于记录事务的操作。
在事务提交后,可以将这些日志复制到其他节点,以确保数据的持久性。
此外,还可以使用备份机制来保证数据的备份和恢复。
2. 并发控制并发控制是指多个事务并行执行时的冲突和一致性问题。
在分布式数据库系统中,由于节点之间的通信延迟和数据复制,事务并发控制面临更大的挑战。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
读书报告信息学院计算机科学与技术杨凌雯201320602019一、并发控制中的概念和理论1.1 并发控制中的概念数据库的特点就是数据的集中管理和共享。
在通常情况下它总是有若干个事务在执行,这些事务可能并发地存取相同的数据,称为事务的并发操作。
并发控制是负责正确协调并发事务的执行,保证这种并发的存取操作不致破坏数据库的完整性和一致性,确保并发执行的多个事务能够正确的运行并获得正确的结果。
分布式并发控制主要解决多个分布式事务对数据并发执行的正确性。
1.丢失更新问题在图5. 1(a)中,数据库中数据项x的初值是100,事务I对x的值减30,事务T2对x的值增加一倍,如果执行次序是先T1后T2,那么结果x的值是140。
如果是先T2后T1,那么x 的值是170。
这两种情况都应该是正确的,因为具体实现时只有其中一种情况.但是若按图5. 1 (a)那样的并发执行,结果x的值是200,这个值肯定是错误的。
因为在时间t7丟失了事务T1对数据库的更新操作,因此这个并发操作是不正确的。
2.不一致分析问题在图5. 1(b)中,事务T1对x值的值减30,而車务T2只要读出x的值。
但在t5时刻,由于T1已更新了x的值,此时T2使用的x值仍是100,因此就造成了不一致,这个问题称为不一致分析问题。
3.依赖于未提交更新的问題在数据库技术中,把未提交的随后又被撤销的更新数据称为“脏数据”。
这里事务T2在t4时刻读的x值就是脏数据。
1.2事务可串行化理论的基本概念一般来说,对一组并发的分布式事务可能存在多种正确调度,可串行化调度是分布式事务能否正确执行的基本方法。
事务的可串行性是指若千个事务并发执行的结果与按希望的顺序执行的结果相同时,称诸事务是可串行的。
这就是说,如果事务的并发执行能够通过以一定顺序串行执行就可使数据库处于新的一致状态,那么诸如丢失更新的问题就可能得到解决,这就是串行化理论的观点。
1.分布式事务的一个调度在数据库系统中,事务访问数据库中数据的方式是通过发出读操作和写操作原语来实现的。
通常,以T1表示某个事务,以Ri(x)表示该事务对数据项x的读操作,以Wi(x)表示该事务对数据项x的写操作,这里不考虑数据项x的粒度。
事务的一个操作序列称为一个调度(schedule,也称历史history),一般以字母S表示。
例如:S:R1(x),R2(y),W2(y),R2(x), W1(x),W2(x)S是关于两个事务的一个调度。
两个同时访问同一数据项x的操作,如果其中至少有一个是写操作,那么称这两个操作是冲突的。
1)读操作不相互冲突,因此只有两种冲突:读-写冲突(或写-读冲突),及写-写冲突。
2)两个操作可以属于同一事务或者两个不同的事务,在后者的情况下,称为两个事务冲突。
3)如果有两个事务Ti和Tj,Ti的所有操作都先于Tj的操作,那么这两个事务为串行执行的,必定不会有冲突。
2.串行调度对一个串行调度来说,它总是可以正确的执行,执行它可以使数据库保持一致状态。
1) 如果S正确执行完成,则S中的每一个事务都被提交,由于事务的原子性保证了数据库的一致性。
2) 如果S在执行时发生故障,若Tk之前的事务都已提交,则夭折Tk,使数据库的状态恢复到Tk前的状态。
该状态的数据库也是一致的,因力Tk之前的事务都已提交。
3) 如果S在执行时发生故障,若Tk之前的事务有被夭折的,则夭折Tk,重做Tk以前已被提交的事务,撤销Tk以前被夭折的事务,此时数据库也是一致的。
串行调度总是可以使数据库保持一致。
但是,串行调度时系统的运行效率较低。
3.可串行化调度串行调度对不会引起冲突的操作要求过高,它们可以进行并行操作。
如果在两个操作间存在冲突,这两个操作的执行顺序就很重要;而对于两个不会引起冲突的操作,它们的执行顺序则并不重要。
事务的并发控制主要是正确处理并发执行的事务对数据库的冲突操作。
可串行化调度,直观上看,是让有冲突的操作串行执行,非冲突的操作并行执行,所以可串行化调度就是事务并发控制要寻求的基本方法。
通常分布式事务的可串行化调度可以转化为子事务的可串行化调度,但涉及多副本选择时,分布式事务调度要多做一个选择副本的操作,以避免冲突操作。
1.3 分布式事务的可串行化理论现在给出关下分布式事务的可串行化理论的一些定义。
1.事务2.冲突操作如果有两个操作P和Q对同一个数据x进行操作,其中有一个是写操作W[x],则P 和Q称为冲突操作。
3. 并发事务的一个调度(简称并发调度)第一种情况简单地说明了调度的域是每个事务域的并集。
第二种情况定义排序关系为每个事务排序关系的超集,这保证了每一事务内部的操作的顺序。
最后一种情况定义了冲突操作的执行顺序。
4.串行调度5.一致性调度如果执行一个调度S,使数据库从一个一致状态转变到另一个一致状态,则称调度S 为一致性调度。
显然,串行调度是一致性调度,但是一致性调度不一定是串行调度。
6.两个调度等价(冲突等价)7.可串行化调度与串行调度等价的调度称为可串行化调度。
例1考虑两个事务,分别定义为对于这两种调度,可以产生如下五种调度:S1={R1(x),x=x+10,W1(x),R1(y),y=y-15,W1(y),C1, R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2}S2={R1(x),x=x+10,W1(x), R2(x),x=x-20,W2(x), R1(y),y=y-15,W1(y),C1, R2(y),y=y*2,W2(y),C2}S3={R1(x),x=x+10,W1(x), R2(x), x=x-20,W2(x),R2(y),y=y*2,W2(y),C2 ,R1(y),y=y-15,W1(y),C1}S4={R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2 ,R1(x),x=x+10,W1(x),R1(y),y=y-15,W1(y),C1}S5={R2(x),x=x-20,W2(x), R1(x),x=x+10,W1(x), R2(y),y=y*2,W2(y),C2 ,R1(y),y=y-15,W1(y),C1}如果将事务提交延迟到两个事务操作完成之后执行,有:1)调度S1和S4是串行调度2)调度S2和S1的冲突操作具有相同的顺序,因此是等价调度;S2是可串行化调度,也是一致性调度3)调度S3虽是一致调度,但是它不与S1或S4等价,所以S3不是可串行化调度4)调度S5和S4等价,所以S5是一致调度,也是可串行化调度有以下推论:1)一个可串行化调度必定与某个串行调度等价,且是一致性调度2)一致性调度不一定是可串行化调度3)同一事务集几个可串行化调度,他们的结果未必相同1.4 分布式事务的可串行化调度测试1.使用优先图判别可串行化调度调度S 的优先图是一个有向图G(N,E) ,其中N: 一组节点N={T1T2,…,Tn}, S中的事务E: 一组有向边E={e1,e2,…,en}, Ti,Tj 是图中的一条边,当且仅当p Ti, q Tj 使得p, q 冲突,并且p <S q。
算法5.1 测试调度S的可串行化1)对于调度S中的事务Ti,在图中创建一个节点Ti。
2)对于每一种这样的情形:如果S中的在Ti执行了W(X)操作后执行Tj的R(X)操作,那么在优先图中创建一条边(Ti→Tj )。
3)对于每一种这样的情形:如果S中的在Ti执行了R(X)操作后执行Tj的W(X)操作,那么在优先图中创建一条边(Ti→Tj )。
4)对于每一种这样的情形:如果S中的在Ti执行了W(X)操作后执行Tj的W(X)操作,那么在优先图中创建一条边(Ti→Tj )。
5)当且仅当优先图中没有闭环时,调度S是可串行化的。
一般来说,如果调度S的优先序图不存在环路,那么就可有若干个与S等价的串行调度。
但如果优先图存在环路,那么不可能创建任何等价的串行调度,从而S是不可串行的。
2.分布式数据库中可串行化理论的扩展可串行化理论是事务并发控制的基础,判别一个调度是否为一个一致调度,只需判别其是否可串行化就行,即并发控制程序的主要功能就是为并发执行的诸事务产生一个可串行化的调度。
在分布式数据库中,只涉及一个站点上的调度称为局部调度,涉及多个站点上的调度称为全局调度。
很有可能局部调度都是可串行化的,而分布式数据库的相互一致性却仍不能保证。
3. 单副本可串行化相互一致性要求所有数据项副本的值都是相同的,能维持相互一致性的调度称作单副本可串行化(one-copy serifdizable)的调度。
一个单副本可串行化的全局调度必须满足以下条件:1) 每一个局部调度必须是可串行化的。
2) 两个冲突操作在它们同时出现的各个局部调度中,必须具有相同的相对顺序。
4. 读一个/写全部副本控制协议1. 5并发控制机制的常用方法及其分类1.使用协议或规则保证调度是可串行化的如果任意地执行事务,然后再测试结果调度的可串行化,那么一旦它的结果是不可串行化的,就必须取消这个调度的影响。
在大多数实际系统中采取的方法是确定保证可串行化的方法,而不必去测试调度本身。
在大多数商业DBMS中采取的方法是去设计协议(规则的集合),如果协议被每个单独事务遵循,或者被一个DBMS并发控制子系统执行,就将确保事务参与的所有调度都是可串行化的。
2. 并发控制机制常用的方法及其分类并发控制机制划分为两神类型:悲观并发控制法和乐观并发控制法。
悲观算法使事务的并发执行在执行生命周期的开始就同步化,而乐观算法则将同步化延迟到事务执行周期的结束。
具体分类如下图:二、分布式数据库系统并发控制的封锁技术2.1基于封锁的并发控制方法概述基于封锁(locking)的并发控制方法,是一种最常见的并发控制算法,其基本思想是事务访问数据项前要对该数据项封锁,如果已被其他事务锁定,就要等待,直到那个事务释放该锁为止。
1.锁的粒度、类型和操作(1)锁的粒度锁的粒度(gmmilarity)是指锁定数据项的范围。
所有的并发控制技术都假定,数据库是由许多命名的数据项组成。
一个数据项可以是下列的任何一种:1) 一个数据库记录;2) 数据库记录中的一个字段值;3) 一个磁盘块(页面);4> 一个完整的文件;5) 整个数据库。
粒度会影响并发控制和恢复的性能,粒度小,并发度高,锁开销大;粒度大,并发度低,锁开销省。
数据项尺寸越大,允许的并发程度越低。
数据项尺寸越小,数据库中项的数量越多。
(2).锁的类型:共享锁:Share锁,S锁或者读锁。
排它锁:eXclusive锁,X锁,拒绝锁或写锁。
更新锁:Update锁,U锁。
数据项既可以读也可以写,则要用X锁;如果数据项只可以读,则要用S锁。
(3). 锁的操作:Read_lock(x):读锁Write_lock(x):写锁unlock(x):解锁数据项的状态:read_locked: 读锁Write_locked:写锁具体操作方法:1)在系统锁表中记录关于锁的信息。