浅谈分布式并发控制
摘要:本文首先介绍了分布式系统的基本概念和并发控制的原理及目的方法。着重描述了几种基本的分布式并发控制的技术,例如基于锁的并发控制技术、基于时间戳的并发控制技术和基于事务的并发控制技术,等等。
关键字:分布式并发控制,基于锁的并发控制,基于时间戳的并发控制,基于事务的并发控制技术
0.引言
计算机现在一般不再单独使用,办公室工作站常与远程打印机、文件服务器、数据库相联。家庭计算机也可通过调制解调器访问电子信息,如电子邮件、公告板、web节点等。大的公司和企业有成百上千乃至上万台计算机通过网络连接起来,协同控制诸如汽车生产、石油提炼、钢铁冶炼、食品生产、电站运行以及商品的设计、开发、销售等。分布式计算已经成为必不可少的技术。
1.分布式系统
分布式计算机系统是一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的计算机系统,各处理器通过互连网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这样就加快了系统的处理速度,简化了主机的逻辑结构,特别适合于工业生产线自动控制和企事业单位的管理,成本低,易于维护,成为计算机在应用领域发展的一个重要方向。
分布式处理系统是一个紧密耦合的系统。并且,分布式处理系统一般有比较复杂的互连网络。它和网络的区别是:计算机网络虽然与分布式计算机系统有相同之处,但二者并不等同。分布式系统的最大特点是整个系统中的各计算机和系统资源对用户都是透明的,也就是说,用户通过键入命令就可以运行程序,由操作系统为用户选择一台最合适的计算机来运行他的程序,并把运行结果传到合适的地方,而这些都不需要用户的干预。网络则一般不对用户透明,对数据的处理需要有用户的参予。一般,分布式系统是计算机网络的一个特例。
分布式系统常常意味着各组成部分之间相当严格的同步以达到协同操作、远程过程调用(rpc:remoteprocedurecall)或消息传送,而网络系统则意味基于消息的通信、可能很长的延迟(在收发消息之间)、松散的同步性以及没有全局的目标。事实上,在网络和分布式系统之间并没有很清晰的界限。但人们一般认为分布式处理的主要特征为:各部件是合作、自治的,资源和控制是分散的并对用户是透明的,另外还有全局的操作系统。概括起来,
即:①硬件资源分散;②数据资源分散;③控制分散,不是集中式的,没有主次分别;④并行处理,即应用程序采用了并行计算;⑤任意两台计算机可通过通信达到资源共享。一般把达到上述条件的计算机系统称为分布式计算机系统,简称为分布式系统。
分布式系统中的每个节点既独立工作,又与所有其他节点并行工作。每个节点多于一个进程(执行程序),每个进程多于一个线程(并行执行任务),可在系统中充当组件。大多数组件具有反应性,对来自用户的命令和来自其他组件的消息不断地进行响应。像操作系统一样,分布式系统旨在避免终止,因此应始终保持至少部分可用的状态。
分布式并发控制作为分布式事务管理的基本任务之一 ,其目的是保证分布式数据库系统中多个事务高效而正确地并发执行。
分布式计算机系统的特点:无主从区分;计算机之间交换信息;资源共享;相互协作完成一个共同任务
分布式计算机系统的功能:通信结构;网络操作系统;分布式操作系统(透明性)
2.分布式并发控制
所谓并发控制就是负责正确协调并发事务的执行,保证这种并发存取操作不会破坏数据库的完整性和一致性 ,以确保并发执行的多个事务能够正确运行并获得正确结果。并发控制算法主要用于控制事务冲突操作的交错执行,以保持数据库的完整性。并发控制旨在提高系统执行效率,并保证分布式事务的一致性,保证允许非冲突的事务可以并发进行,冲突的事务可以串行化进行。利用并发控制的数学理论,可以将分布式控制归结为两个基本问题 ,即读—写同步 ( read -writesynchronization) 和写—写同步 (write- write synchro2nization) 。
分布式并发控制基本算法常见的有基于锁机制的并发控制方法、基于时间戳的并发控制方法还有基于多数法的并发控制方法,等等。下面是对几种并发控制方法的介绍。
2.1基于锁机制的并发控制方法
基于锁(Locking)机制的并发控制方法,是常见的一种并发控制算法。这种锁机制的基本思想是:事务对任何数据的操作均须先申请该数据项的锁 ,只有申请到锁 ,即加锁成功后才可对数据进行操作。操作完成以后 ,释放所申请的锁。如果需申请的锁已被其它事务锁定则要等待 ,直到那个事务释放该锁为止。通过锁的共享及排斥特性 ,来实现事务的可串行化调度。采用锁模型实现并发控制的最著名算法 ,是两段锁协议(即2PL 协议) ,另外常用的还有多副本并发控制方法。
2.1.1两段锁协议
简单说 ,两段锁协议[3,4]的原则是事务在释放某锁后不能再提加锁请求。或者说 ,一个事务应当在确定其不再需要其它加锁的情况后才释放所持有的锁。两段锁协议把每个事务的执行均分为两个阶段:生长阶段和衰退(或收缩)阶段。在生长阶段,事务获得锁并访问数据项,这在阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。在衰退阶段,事务释放锁,在这阶段,事务可以释放任何数据项上的任何类型的琐,但是不能再申请任何琐。两段锁协议不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。两阶段的锁发的封锁序列如下图所示:
图1 封锁序列
2.1.2多副本并发控制方法
多副本的存在一方面改善了系统的性功,提高了系统的稳定性,所以必须通过某种手段,保证各个副本之间的一致性。基本的多副本并发控制算法有:读--写全法,主副本法,中心场地法,多数法。
读—写全法:该方法的特点是:当事务对某一数据项加锁时 ,若加读锁则只对多副本中的某一副本加锁。
多数法:多数法对数据项的加锁,只有当获得多于副本数一半以上的锁(包含读或写锁)后才可以进行 ,即加锁的副本数总要大于未加锁的副本数。因此,当两个事务对同一个数据项申请加锁时,一个事务锁住了该数据项半数以上的副本,另一事务也要申请在半数以上的副本上加锁,则至少有一个副本会发生冲突,局部管理程序将拒绝后一事务的加锁请求,从而实现了同一时刻内两事务不可能对同一数据项及副本加排他锁,只可以加共享锁。
主副本法:当对某一数据项加锁时,不管其副本数多少 ,只要对其中一个称为主副本的加上锁 ,即得到该数据项的锁。
2.2基于时间戳的分布式并发控制
时间戳顺序[2,5]与两段锁是不同的 ,两相端锁(2P L)技术可简单认为是一种保证事务执行的串行性次序的方法,它用上锁和开锁来执行 ,并用事务得到锁的先后次序作为事务操作执行的次序。而基于时间戳的控制技术是事务管理程序 TM把系统中的时戳作为附加数据项加到事务所发出的每一个操作上 ,由于系统时戳的唯一性(即某一时刻只有一个系统时戳)和可比性(根据时戳产生的早晚可比大小) ,数据管理程序DM就可以参照时戳的次序来执行事务的每一个操作 ,从而处理同步中的冲突 ,这就是基本原理。
对每个给定的DM上的T/ O调度程序 ,每个存储在DM上的数据项 x 都已经保存了 x 读操作dm - read (x) 的最大时戳 R-timestamp (x)和写时戳的最大值 W-timestamp (x) 。
以处理 ww 同步为例 ,说明基于时间戳的并行控制方法是如何实现的。若处理两个写事务1和2,若1的写操作dm-write(1)的W-timestamp (x)大于2的写操作dm-write(2)的 W- timestamp (x),则先执行1的写事务,否则拒绝执行1的写操作。
时戳法与加锁法的不同之处在于:加锁法使事务的并行等价于事务的某个串行执行序列 ,而时戳法则等价于一个特定的串行序列 ,即按时戳递增的序列。
2.3基于事务冲突图的并发控制
这是利用存贮过程来访问数据库,且一个存贮的过程( stored proce2dure)对应一个事务。冲突图分析技术可显著改善时戳顺序的性能。利用面向对象的程序设计技术,可把事务定义成事务类(transaction class) ,一个事务类包含一个读集和一个写集。事务在执行前要提交其读集和写集,系统根据事务的读集和写集构造出一无圈的事务冲突图,并根据事务冲突图进行并发控制,这种并发控制方法上具有对数据主加无结构要求,无死锁,非两阶段等优点。
2.4并发控制的乐观法
加锁法和时间戳法是将冲突操作暂时停止或拒绝执行,而乐观法并不考虑冲突却让事务执行完毕。乐观法是以事务间极少发生冲突为前提而提出的。并发控制协议对事务的数据竞争采用乐观的态度,即事务提交前对数据的读写都立即完成 , 其中写操作是对事务私有数据区的改写。事务提交时 , 系统对并发事务的准一致性串行化进行验证 , 通过验证的事务可以提交 , 如验证失败则根据事务的截止期限决定重启还是夭折。
乐观法是并发控制技术领域一种崭新的方法,在提出后引发了一系列的讨论和研究。它的优点和缺点是:并行性程度高 ,存储开销大 ,不必要的重启动程度也高。因此,又提出了一些补充方法 ,如对读操作采用版本(Version)法、快照检验(SnapshotValidation)法等。
3.结束语
并发控制算法的正确性用串行化原理来描述,可串行化理论成为事务并发的基础。判断一个调度是否为一致性调度,只需判其是否串行化就够了。事务并发控制要解决的问题是:允许非冲突的事务并行执行 ,而冲突的事务必须被串行化 ,即实现可串行化调度。
目前 ,在分布式数据库的并发控制领域仍在不断地探讨新的控制方法 ,以便高效解决分布式数据库的并发问题。
参考文献
[1]林克明,尤垂桔,基于多数法的分布式并发控制的实现及改善,计算机时代,2009(7)
[2]顾耀林,贺晓燕,时间戳顺序在分布式并发控制中的应用,信息技术,2001(11)
[3]李国徽,王洪亚,一种新的实时数据库乐观并发控制方法,计算机应用与软件,2004(5)
[4]舒后,分布式并发控制技术研究,北京印刷学院学报,2003(3)
[5]王学军,分布式并发控制算法分析,福建电脑福建电脑,2006(12)