分布式数据库系统的并发控制算法综述

合集下载

分布式数据库的并发控制与事务处理(系列十)

分布式数据库的并发控制与事务处理(系列十)

分布式数据库的并发控制与事务处理:实现数据一致性与可靠性引言:分布式数据库是现代大数据处理的重要组成部分,它的核心挑战之一就是如何在分布式的环境下实现并发控制与事务处理,以保证数据的一致性与可靠性。

本文将就这一主题展开论述,并探讨现有的一些解决方案。

1. 分布式数据库的并发控制在多节点的分布式数据库中,多个事务同时对数据库进行读写操作,如果不加以控制,就会产生一系列的并发问题,如丢失更新、不可重复读、脏读等。

因此,必须采取并发控制策略来保证数据的一致性。

锁机制锁机制是最常见也是最传统的并发控制方式之一。

它通过在事务操作时给需要读写的数据对象加锁,来保证事务的隔离性。

常见的锁机制包括共享锁和排他锁,前者用于读操作,后者用于写操作。

然而,在分布式环境下,锁机制的实现变得复杂,因为需要考虑不同节点之间的同步与协调。

乐观并发控制乐观并发控制是另一种常见的并发控制策略,它基于假设冲突很少发生的原则。

在乐观并发控制中,事务执行时不会对数据对象加锁,而是通过版本号或时间戳等机制来判断数据是否发生冲突。

一旦发生冲突,事务就会进行回滚并重新执行。

乐观并发控制适用于读多写少的场景,并且可以提高并发性能。

2. 分布式数据库的事务处理事务处理是分布式数据库中保证数据可靠性的关键手段。

事务是一组逻辑上有关联的数据库操作,它要么全部执行成功,要么全部回滚到初始状态,不允许部分成功部分回滚。

分布式环境下的事务处理相比于单节点的数据库,面临着更大的挑战和复杂性。

两阶段提交协议两阶段提交协议是一种用于分布式事务处理的经典算法。

它通过协调各个参与节点的执行过程,保证所有节点要么全部执行提交,要么全部执行回滚。

该协议的核心思想是将事务的执行分为准备阶段和提交阶段,并通过协调者节点来确保所有参与节点的一致性。

然而,两阶段提交协议存在阻塞和单点故障等问题,影响了性能和可靠性。

其他分布式事务处理方案针对两阶段提交协议的不足,研究者们提出了一系列的改进与替代方案。

数据库并发控制的主要方法

数据库并发控制的主要方法

数据库并发控制的主要方法数据库并发控制是指为了保证数据库系统的并发性能和稳定性,对数据库中的并发请求进行调度和管理的方法。

在分布式数据库中,并发控制尤为重要,因为分布式数据库通常具有非常高的并发处理能力,而并发控制不当会导致数据库系统的性能下降。

下面介绍数据库并发控制的主要方法:1. 事务隔离级别:事务隔离级别是数据库中用来控制并发访问的一种机制。

常见的事务隔离级别包括可重复读级别(repeatable Read)、串行化级别(Serializable)、读未提交级别(Read Uncommitted)、行级隔离级别(Line级隔离)等。

选择适当的事务隔离级别可以保证数据的一致性和完整性,同时也可以控制并发访问。

2. 锁机制:锁机制是数据库中用来实现并发控制的一种常用方法。

锁机制可以保证某个事务在执行期间对其他事务的修改进行锁,从而避免多个事务同时修改同一数据造成冲突。

常见的锁机制包括互斥锁、读写锁、自旋锁等。

3. 数据库的并发控制策略:数据库的并发控制策略包括硬件策略和软件策略。

硬件策略是指通过配置数据库的硬件资源(如CPU、内存、磁盘等)来实现并发控制。

软件策略是指通过编写数据库的应用程序来实现并发控制。

常见的数据库并发控制策略包括读写队列、并发会话等。

4. 数据库的缓存机制:数据库的缓存机制可以通过缓存来提高数据库的并发处理能力。

常见的数据库缓存机制包括缓存页面、缓存行等。

缓存机制可以避免数据库对同一数据进行多次查询,从而提高数据库的并发处理能力。

5. 数据库的系统架构设计:数据库的系统架构设计也是数据库并发控制的重要因素。

系统架构设计应该考虑数据库的并发处理能力、数据库的性能和稳定性等因素,从而设计出适合大规模分布式数据库的并发控制系统。

数据库并发控制是数据库系统的一个重要组成部分,需要根据具体的应用场景选择合适的方法,以保证数据库系统的并发性能和稳定性。

第5章分布式数据库中的并发控制

第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)乐观并发控制的核心思想是,允许多个事务同时更改数据,但在数据提交之前,检查每个事务是否产生了冲突。

如果发现了冲突,系统可以取消其中一个事务,让另一个事务提交。

这种方法是一种不加锁的机制,不会阻止到数据的并发修改。

优点:与悲观并发控制相比,乐观并发控制不会对数据的修改进行锁定,这种方法更适用于对干预小的业务(比如读多写少的场景),由于没有锁的占用,可以提高系统的并发度和吞吐量。

分布式数据库系统的并发控制算法综述

分布式数据库系统的并发控制算法综述

分布式数据库系统的并发控制算法综述随着互联网的发展和大数据的兴起,分布式数据库系统越来越受到关注和使用。

在分布式数据库系统中,由于数据分布在多个节点上,会出现多个用户同时访问同一数据副本的情况,因此并发控制成为保证数据一致性和提高系统性能的关键技术之一、本文将对分布式数据库系统中的并发控制算法进行综述。

分布式数据库系统的并发控制算法主要包括乐观并发控制算法(Optimistic Concurrency Control,简称OCC)和悲观并发控制算法(Pessimistic Concurrency Control,简称PCC)两大类。

乐观并发控制算法是基于乐观的假设:大部分事务之间不存在冲突,只有少数事务之间存在冲突。

乐观并发控制算法不需要显式的锁定和解锁操作,而是在事务提交时对可能的冲突进行检测和解决。

乐观并发控制算法实现的关键是版本控制机制,每个数据对象都有一个版本号,事务在读取和写入数据时会比较版本号来判断是否发生冲突。

常用的乐观并发控制算法有基于时间戳的算法(Timestamp-based Concurrency Control,简称TCC)、基于快照的隔离级别算法(Snapshot Isolation Level,简称SI)和多版本并发控制算法(Multiversion Concurrency Control,简称MVCC)等。

基于时间戳的并发控制算法是乐观并发控制算法的经典之作,其基本思想是为每个事务分配一个唯一的时间戳,读操作只能读取对应时间戳之前的数据,写操作会更新数据的时间戳。

当事务提交时,会检查事务读取的数据是否发生了冲突,如果没有冲突则可以成功提交,否则会进行回滚操作。

这种算法能够提供乐观的并发控制,但由于需要维护和比较时间戳,可能导致性能开销较大。

基于快照的隔离级别算法是一种基于快照的多版本并发控制算法。

该算法为每个读操作创建一个独立的快照,读操作只能读取对应快照中的数据,写操作会创建一个新的快照并更新数据。

分布式数据库系统的并发控制算法综述

分布式数据库系统的并发控制算法综述

分布式数据库系统的并发控制算法综述
古明家
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2008(000)003
【摘要】并发控制是分布式数据库事务管理中非常重要的一部分,其性能的优劣是衡量分布式数据库系统功能强弱和性能好坏的重要标志之一.阐述并发控制的传统算法和一些其他算法,给出衡量并发控制算法性能的方法和一些有意义的研究方向.【总页数】3页(P147-149)
【作者】古明家
【作者单位】广西民族大学数学与计算机科学学院,南宁,530006
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于Petri网合成与化简的分布式数据库系统并发控制的死锁检测 [J], 韩耀军;蒋昌俊;罗雪梅
2.一种用于分布式数据库系统的并发控制新算法 [J], 毛新宇;王化文
3.一种用于分布式数据库系统的并发控制新算法 [J], 毛新宇;王化文
4.分布式数据库系统的并发控制机制研究 [J], 洪家芬
5.基于分布式数据库系统的并发控制方法应用研究 [J], 林月
因版权原因,仅展示原文概要,查看原文内容请购买。

分布式数据库的并发控制与事务处理(系列四)

分布式数据库的并发控制与事务处理(系列四)

分布式数据库的并发控制与事务处理在网络时代的大数据环境下,分布式数据库已经成为了大型企业和机构处理海量数据的首选方案。

与传统的集中式数据库不同,分布式数据库将数据存储在多个节点上,使数据的访问和管理更加分散和灵活。

然而,在多节点的环境下,如何保证数据的一致性和并发控制成为了分布式数据库设计中的重要问题。

一、多版本并发控制(MVCC)多版本并发控制是一种常见的应对分布式数据库并发问题的技术。

它通过在每个事务开始时给每个数据项创建一个快照,并将快照的版本号与事务的版本号进行比较来判断事务的可见性。

当事务读取数据时,它只能看见自己开始之前已经提交的数据版本。

当事务需要写入数据时,它会在事务提交之前将修改的数据暂存于临时空间,待事务提交后再应用到真实数据上。

多版本并发控制的优点在于可以提供更高的并发性能和更好的可扩展性。

因为每个事务仅需要读取自己开始之前的数据版本,而多个事务可以并发地进行读操作,减少了争抢数据项的情况。

同时,多版本并发控制也使得事务可以在无需阻塞其他事务的情况下并发进行读写操作,提高了系统的并发处理能力。

然而,多版本并发控制也存在着一些问题。

首先,当事务较多时,会产生大量的数据版本,占用大量的存储空间。

其次,多版本并发控制需要维护数据项的版本信息,增加了系统的开销。

因此,对于某些对存储空间和性能要求较高的应用场景,可以考虑其他并发控制策略。

二、两段式锁协议(Two-Phase Locking)两段式锁协议是一种经典的并发控制策略,旨在保证事务的隔离性和一致性。

它将事务的执行分为两个阶段,分别是增长阶段和收缩阶段。

在增长阶段,事务对所需的数据项进行加锁。

只有当事务获得了所有需要的锁资源时,才能进行后续的读写操作。

这一阶段的目标是保证事务的隔离性,防止数据的并发读写导致不一致的情况发生。

在收缩阶段,事务按照预定的顺序逐个释放所持有的锁资源。

这一阶段的目标是保证事务的一致性,防止数据项被无效修改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分布式数据库系统的并发控制算法综述摘要:并发控制是分布式数据库事务管理中非常重要的一部分,其性能的优劣是衡量分布式数据库系统功能强弱和性能好坏的重要标志之一。

并发控制是分布式数据库系统为了适应多用户操作所必须解决的问题。

分布式数据系统是在集中式数据库系统技术的基础上发展起来的,并发控制也是分布式数据库研究的最关键热点问题之一。

关键词:分布式数据库系统并发控制事务算法一.分布式数据库系统的概述分布式数据库系统是在集中式数据库系统的基础上发展起来的,是计算机技术和网络技术结合的产物。

分布式数据库系统(DDBS)包含分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。

在分布式数据库系统中,一个应用程序可以对数据库进行透明操作,数据库中的数据分别在不同的局部数据库中存储、由不同的 DBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起[1]。

一个应用程序通过网络的连接可以访问分布在不同地理位置的数据库。

它的分布性表现在数据库中的数据不是存储在同一场地。

更确切地讲,不存储在同一计算机的存储设备上。

这就是与集中式数据库的区别。

从用户的角度看,一个分布式数据库系统在逻辑上和集中式数据库系统一样,用户可以在任何一个场地执行全局应用。

就好那些数据是存储在同一台计算机上,有单个数据库管理系统(DBMS)管理一样,用户并没有什么感觉不一样。

分布式数据库系统适合于单位分散的部门,允许各个部门将其常用的数据存储在本地,实施就地存放本地使用,从而提高响应速度,降低通信费用。

分布式数据库系统与集中式数据库系统相比具有可扩展性,通过增加适当的数据冗余,提高系统的可靠性。

在集中式数据库中,尽量减少冗余度是系统目标之一.其原因是,冗余数据浪费存储空间,而且容易造成各副本之间的不一致性.而为了保证数据的一致性,系统要付出一定的维护代价.减少冗余度的目标是用数据共享来达到的。

而在分布式数据库中却希望增加冗余数据,在不同的场地存储同一数据的多个副本,其原因是:①.提高系统的可靠性、可用性当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因一处故障而造成整个系统的瘫痪。

②.提高系统性能系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。

二.并发控制的概述并发控制是指在多用户的环境先,对数据库进行并发操作进行规范的机制。

并发控制是以事务为单位进行的,其作用主要是协调同一时间访问同一数据库文件的多个事务之间的关系,防止这些事务间发生冲突,产生一个可串行化得调度。

如果不对并发执行的程序进行必要的控制,那么即使没有故障和程序出错也会破坏数据库的一致性和完整性。

因此,一个数据库系统有无并发控制机制,以及并发控制机制的优劣是衡量一个数据库系统功能强弱和性能好坏的重要标志之一。

[2]DBMS的并发控制是以事务为单位进行的。

数据库在执行事务时,要么执行事务中的全部操作,要么一个操作都不执行。

当有多个事务对数据库进行操作时,如果对数据库进行操作的各个事务按顺序执行,即一个事务执行完全结束后,另一个事务才开始,则称这种执行方式为串行访问(Serial access)。

如果DBMS可以同时接纳多个事务,事务可以在时间上重叠执行,则称这种执行方式为并发访问(Concurrent access)。

在单CPU系统中,同一时间只能有一个事务占用CPU,若各个事务交叉使用CPU,则称这种并发方式为交叉并发。

在多CPU系统中,可以允许多个事务同时占用CPU,这种并发方式称为同时并发。

1. 并发控制的单位――事务事务是数据库的逻辑工作单位,它是用户定义的一组操作序列。

一个事务可以是一组SQL语句、一条SQL语句或整个程序。

事务的开始和结束都可以由用户显示的控制,如果用户没有显式地定义事务,则由数据库系统按缺省规定自动划分事务。

事务应该具有4种属性:原子性、一致性、隔离性和持久性。

(1)原子性事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或者全不做,不能部分的完成。

这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。

系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘上。

当发生崩溃时,系统能根据这些操作记录当时该事务处于何种状态,以此确定是撤销该事务所做出的所有修改操作,还是将修改的操作重新执行。

(2)一致性一致性要求事务执行完成后,将数据库从一个一致状态转变到另一个一致状态。

它是一种以一致性规则为基础的逻辑属性,例如在转账的操作中,各账户金额必须平衡,这一条规则对于程序员而言是一个强制的规定,由此可见,一致性与原子性是密切相关的。

事务的一致性属性要求事务在并发执行的情况下事务的一致性仍然满足。

它在逻辑上不是独立的,它由事务的隔离性来表示。

(3)隔离性隔离性意味着一个事务的执行不能被其他事务干扰。

即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

它要求即使有多个事务并发执行,看上去每个成功事务按串行调度执行一样。

这一性质的另一种称法为可串行性,也就是说系统允许的任何交错操作调度等价于一个串行调度。

串行调度的意思是每次调度一个事务,在一个事务的所有操作没有结束之前,另外的事务操作不能开始。

由于性能原因,我们需要进行交错操作的调度,但我们也希望这些交错操作的调度的效果和某一个串行调度是一致的。

DM实现该机制是通过对事务的数据访问对象加适当的锁,从而排斥其他的事务对同一数据库对象的并发操作。

(4)持久性系统提供的持久性保证要求一旦事务提交,那么对数据库所做的修改将是持久的,无论发生何种机器和系统故障都不应该对其有任何影响。

例如,自动柜员机( ATM)在向客户支付一笔钱时,就不用担心丢失客户的取款记录。

事务的持久性保证事务对数据库的影响是持久的,即使系统崩溃。

正如在讲原子性时所提到的那样,系统通过做记录来提供这一保证。

DM没有提供显式定义事务开始的语句,第一个可执行的SQL语句(除CONNECT 语句外)隐含事务的开始,但事务的结束可以由用户显式的控制。

在DM中以下几种情况都结束 (正常,非正常)某一事务:(1)当某一连接的属性设置为自动提交,每执行一条语句都会提交;(2)遇到COMMIT/ROLLBACK语句,便提交/回滚一事务;(3)当系统的DDL自动提交开关打开时(缺省为打开),遇到DDL语句则自动提交该DDL语句和以前的DML和DDL操作;(4)事务所在的程序正常结束和用户退出;(5)系统非正常终止时;三.并发的目的并发控制是分布式数据库系统中分布式事务管理的基本任务之一,在数据库管理系统中对事务采用并发机制的主要目的有两个:1、改善系统的资源利用率对于一个事务来讲,在不同的执行阶段需要的资源不同,有时需要CPU,有时需要访问磁盘,有时需要I/O、有时需要通信如果事务串行执行,有些资源可能会空闲;如果事务并发执行,则可以交叉利用这些资源,有利于提高系统资源的利用率2、改善短事务的响应时间设有两个事务T1 和T2,其中T1是长事务,交付系统在先;T2是短事务,交付系统比T1稍后。

如果串行执行,则须等T1执行完毕后才能执行T2。

而T2的响应时间会很长。

一个长事务的响应时间长一些还可以得到用户的理解,而一个短事务的响应时间过长,用户一般难以接受。

如果T1 和T2并发执行,则T2可以和T1重叠执行,可以较快地结束,明显地改善其响应时间。

[3]二 .现行的并发控制算法目前在分布式数据库系统应用中传统的并发控制算法有两阶段封锁法、多粒度封锁法、时标排序法、多版本并发控制和乐观的并发控制 [4]。

2.1两阶段封锁法“两段”锁的含义事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。

封锁是事项并发控制的一个非常重要的技术。

所谓封锁就是事务T在对某个数据对象,例如,在标、记录等操作之前,先向系统发出请求,对其加锁。

加锁后事务T就对数据库对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。

2.2封锁类型DBMS通常提供了多种数据类型的封锁。

一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁类型决定的。

基本的封锁类型有两种:排他锁(exclusive lock,简记为X锁)和共享锁(share lock简记为S锁)排他锁又称为写锁。

若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。

这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

共享锁又称为读锁。

若事务T对数据对象A加上S锁,则其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的锁。

这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。

排他锁与共享锁的控制方式可以用下图的相容矩阵来表示。

在下图的封锁类型相容矩阵中,最左边一列表示事务T1已经获得的数据对象上的锁的类型,其中横线表示没有加锁。

最上面一行表示另一事务T2对同一数据对象发出的封锁请求。

T2的封锁请求能否被满足用Y和N表示,其中Y表示事务T2的封锁要求与T1已持有的锁相容,封锁请求可以满足。

N表示T2的封锁请求与T1已持有的锁冲突,T2请求被拒绝。

基于封锁的并发控制算法 ,是一种最常见的并发控制算法 ,其基本思想是事务访问数据项前要对该数据项封锁 ,如果已被其他事务锁定 ,就要等待 ,直到那个事务释放该锁为止。

两阶段封锁算法的基本思想是一个事务可以被分成两个阶段 :①成长阶段。

事务只能获得新的数据项锁 ,而不能释放任何已持有的锁。

②衰退阶段。

事务只能释放已经持有的锁 ,而不能获得任何的新锁。

两阶段封锁法保证了事务调度的可串行化 ,且限制了一个调度中可以发生的并发事务的数量。

它的优点是实用 ,且可以避免由于并发冲突操作引起的数据错误 ;缺点是可能产生饥饿和死锁。

传统的两阶段封锁方法有 :集中式两阶段封锁法、主副本两阶段封锁法和分布式两阶段封锁法。

2.2多粒度封锁法多粒度封锁法就是封锁的粒度不是单一的一种粒度 ,而是有多种粒度 ;允许多粒度树中的每个节点被独地封锁。

在一个系统中同时支持多种封锁粒度供不同的事务选择封锁对象可以很大也可以很小,例如可以对整个数据库加锁,也可以对某个属性值加锁。

封锁对象的大小成为封锁的粒度。

粒度会影响并发控制和恢复的性能。

多粒度树是以树形结构来便是多级封锁粒度,其根结点是整个数据库,表示最大的数据粒度,叶结点表示最小的数据粒度。

选择封锁粒度的原则:2.3时标排序法基于时标排序的并发控制算法的基本思想是选择一个事先的串行次序依次执行事务 ;为建立这个次序,在每个事务初始化时 ,事务管理器给每个事务 Ti分配一个在整个系统中唯一的时标 TS(Ti),时标具有唯一性和单调性 ,即同一事务管理程序所产生的两个时标将是单调递增的 ;事务的执行等效于按时标次序串行执行 ;如果发生冲突 ,是通过撤消并重新启动一个事务来解决的 ;事务重新启动时 ,则赋予新的时标。

相关文档
最新文档