分布式事务管理和恢复及数据库并发控制

分布式事务管理和恢复及数据库并发控制
分布式事务管理和恢复及数据库并发控制

分布式事务管理和恢复及数据库并发控制

摘要:分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。分布式数据库在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。在一个分布式的数据库系统中往往需要维护同一个数据库或数据块的多个副本, 那么如何有效的维护多副本之间数据一致性的问题就摆到我们面前。本文深入研究了分布式数据库系统的事务管理和恢复以及数据库的并发控制。关键字:分布式数据库,事务管理和恢复,分布式并发控制

1 分布式数据库的概述

随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,以分布式为主要特征的数据库系统的研究与开发受到人们的注意。分布式数据库是数据库技术与网络技术相结合的产物,在数据库领域已形成一个分支。分布式数据库的研究始于20世纪70年代中期。世界上第一个分布式数据库系统SDD-1是由美国计算机公司(CCA)于1979年在DEC计算机上实现。20世纪90年代以来,分布式数据库系统进入商品化应用阶段,传统的关系数据库产品均发展成以计算机网络及多任务操作系统为核心的分布式数据库产品,同时分布式数据库逐步向客户机/服务器模式发展。

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

分布式数据库系统与集中式数据库系统相比具有可扩展性,通过增加适当的数据冗余,提高系统的可靠性。在集中式数据库中,尽量减少冗余度是系统目标之一.其原因是,冗余数据浪费存储空间,而且容易造成各副本之间的不一致性.而为了保证数据的一致性,系统要付出一定的维护代价.减少冗余度的目标是用数据共享来达到的。而在分布式数据库中却希望增加冗余数据,在不同的场地存储同一数据的多个副本,其原因是:a.提高系统的可靠性、可用性当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因一处故障而造成整个系统的瘫痪。b.提高系统性能系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。

2 分布式事务的管理与恢复

2.1 分布式事务管理

2.1.1 分布式事务定义

在分布式数据库系统中,任何一个应用的请求最终都将转化成对分布在网络中相应站点上数据库数据存取操作的序列,因此分布式数据库系统中的事务是一个分布式操作的序列,被操作的数据分布在不同的站点上,所以称为分布式事务。在分布式数据库系统中,一个分布式事务即全局事务.通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。一般地,主事务负责事务的卄始、提交和异常终止;各个子事务完成对相应站点上数据库的访问操作。所谓"全局事务"是指一个要求访问或更新多个站点上数据的事务,所谓"局部事务"是指一个仅仅访坷或更新一个站点上数据的事务。

1) 分布式事务的特点

同集中式数据库系统--样,为了保证数据库的一致性和可靠性,保证数据访问的正确性和有效性,分布式数据库系统中的事务也应具有事务的ACID四个特性,即原子性、一致性、隔离性和耐久性。

2) 原子性

分布式事务的原子性是指事务执行时的不可分割性。即要么它所包含的引起分布式数据厍改变的操作全部都成功执行,要么都不执行。事务的原了-性保证分布式数据库的状态总是从一个一致状态变换到另一个一致状态,而不会出现不一致状态。

3) 一致性

分布式事务的一致性简单地说是指事务的正确性,或者说一个分布式事务是一个使分布式数据库从一个一致状态转变为另一个一致状态的正确程序。分布式事务执行完毕时,必须以正确的状态退出系统。如果事务不能达到一个正常的结束状态,就必须把分布式数据库退回到该事务执行前的初始状态。所谓分布式数据库状态是指在某个给定时间点上,分布式数据库中存储的所有数据项(值)的集合。分布式数据库的一致性状态应该满足模式所指定的约束,以及数据库必须遵守的任何其他约束。

4) 隔离性

分布式事务的隔离性是指一个正在执行的事务在其提交之前,决不允许把它对共享数据所作改变的结果提供给其他事务使用。这就是说,事务的执行似乎与其他事务相隔离,即事务的执行不应受到其他并发事务执行的干扰。保持事务的隔离性是有许多原因的,保证维护事务的交互一致性是原因之一。如果两个并发执行的事务要操作同一个数据,且其中一个事务要使用另一个事务正在更改,但后来又因某种原因不改了的数据,就不能保证第二个事务

使用的值是正确的。

2.1.3分布式事务的结构和事务状态

1)分布式事务的结构

2)分布式数据库中进程的协作

两个概念

进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它有两个侧面:

(1)进程说明:定义进程的行为模式, 包括数据和对数据的一组操作, 执行这组操作, 完成某一功能。

(2)进程执行:按进程说明中所定义的模式来启动这个进程,执行其中的那组操作。

进程的协作

为了协调地执行分布式应用的全局操作,分驻于不同站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:

每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;

只有总代理才能发出全局有效的事务开始,提交和撤销原语;

只有总代理才能请求建立新的事务代理;

各站点上的子事务都执行成功,总代理才能决定提交该事务,否则总代理将决定撤销该事务。

2.1.4分布式事务管理的问题和目标

1)分布式事务管理的问题

(1) 处理数据项的多个副本:分布式事务管理负责保持同一数据的多个副本间的一致性。

(2) 单个站点的故障:当故障站点得到恢复时,DDBMS协同该故障站点上的DBMS,必须在该站点与系统重新连接时,使它的局部数据与其他站点同步。

(3) 通信网络的故障:系统必须有能力处理一个或多个连接站点的通信网络故障。这个问题的一个极端情况是发生网络分割。

(4) 分布式提交:如果在提交一个分布式事务过程中至少有一个站点发生故障的话,那么这个分布式事务的提交将会产生问题。

2)分布式事务管理的目标

事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。

图1.分布式事务管理

事务管理的目标是:

(1)维护分布式事务的原子性,一致性,耐久性和隔离性。

(2)获得最小的主存和CPU开销,降低控制报文的传输个数和加快分布式事务的响应速度;

(3)获得最大限度的系统可靠性和可用性。

2.1.5分布式事务的管理

事务管理的任务就是负责当若千个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。

1) 分布式事务管理的抽象模型

在分布式数据库系统中,事务管理功能分成两个层次。在每个站点上,又类似于集中式数据库系统中的局部事务管理器(LTM)进行局部事务的管理,负责本站点事务的执行,完成对本站点数据库数据的访问;对整个分布式数据库系统,由驻留在各个站点上的分布式事务管理器(DTM)共同协作,实现对分布式事务的协调和管理。

图2分布式事务管理的抽象模型

局部事务管理器LTM的结构和功能在许多方面与集中式系统类似,主要包括:(1)保证本地事务的ACID特性;

(2)维护一个用于恢复的日志,代替DTM把用于分布式事务执行和恢复的信息记入日志。

(3)参与适当的并发控制模式,以协调在该站点上执行的事务的并发执行。接收并听从本站点上DTM代理发来的LOG原语,记入日志并执行之。

分布式事务管理器DTM的功能包括:

(1)保证分布式事务的ACID特性,尤其是执行分布式事务的原子性,使每个站点的子事务都成功执行,或都不执行。这是通过向各个站点begin_transaction,commitabort,create 原语来实现的。

(2)负责协调由该站点发出的所有分布式事务的执行。包括:启动分布式事务的执行;将分布式事务分解为一些子事务,并将这些子事务分派到恰当的站点上去执行;决定分布式事务的终止,即决定在该分布式事务中所包含的所有站点上的子事务都撤销或都提交。

(3)支持分布式事务的执行位置透明性,这也是分布式事务管理的最基本要求。分布式事务管理器根据事务内部的逻辑划分为若干子事务,按某种要求分布到相应站点上执行,最后由源发站点提供事务的最终结果。它实现了对网络上各站点的各个子事务的监督与管理,完成对整个分布式事务执行过程的调度和管理,从而保证分布式数据库系统的高效率。

2) 分布式事务执行的控制模型

分布式事务控制模型是指协调分布式事务中各成员DBMS执行其子事务的通用方法。控制分布式事务执行的控制模型有:主从模型、三角模型和层次模型。

主从控制模型

这种控制模型由分布式事务管理器作为主控器,而用一个或几个局部半务管理器作为从控制器。在这种模型中,分布式事务管理器通过对局部半务管理器发送消息和接受从它们那里返回的消息,来控制所有的需要同步的操作。分布式事务管理器激活每一个局部事务管理器,且指示其做什么。根据这些指示,由局部事务管理器完成各自对本地数据库的访问,并把结果返回到分布式亊务管理器。

三角控制模型

在这种控制模型中,控制是在分布式事务管理器与局部事务管理器之间分享的。局部事务管理器与局部事务管理器之间可以发送和接收数据,而不必通过分布式事务管理器作为中介。这种控制模型避免/在分布式事务管理器与局部事务管理器之间不必要的数据传输。

层次控制模型

在这种控制模型中,每个局部事务管理器本身又可作为分布式事务管理器。这种控制模型允许进行追加设计,当某个局部事务管理器接受到来自另一个局部亊务管理器的请求时,该局部亊务管理器自身即成为一个全局事务管理器。它可以把接收到的事务优化成为另一个分布式事务,并将其分布到相关的其他局部亊务管理器上去执行。可见,这种控制模型比前两种控制模型更为复杂。

2.2 分布式数据库事务恢复

2.2.1分布式数据库系统中的故障

数据库在运行过程中故障和错误总是难免的。不同的故障会造成数据库不同

程度的损害, 轻则事务不能正常运行, 重则造成数据库数据不一致性。更严重的情况, 会使部分或整个数据库遭到破坏。

2.2.2 事务故障恢复的基本概念

研究数据库系统中故障的恢复,主要是指如何恢复因故障而破坏的数据库,使数据库恢

复到一个正确,一致的状态。恢复的基本原理是数据冗余,即利用冗余存储在别处的信息和

数据,部分或全部重建数据库。

1)事务故障和事务恢复

当发生事务故障时,保证事务原子性的措施称为事务故障恢复,简称为事务恢复。事务

恢复主要时依靠日志来实现的。

2)事务状态及状态转移

为保证可恢复性,系统需要保存事务的起始,终止,提交或撤销的时间轨迹,事务恢复

管理器还对下列操作进行跟踪记录。

3)事务的提交点

当事务T所有的站点数据库存取操作都已成功执行,并且所有操作对数据库的影响都已

记录在日志中时,该事务T就到达提交点(committed point).提交点后事务就成为已提交的

事务,并且假定其结果已永久记录在数据库中(事务的永久性)。然后事务在日志中写入提

交记录[commit,T].在系统发生故障时,需要扫描日志,检查那些已在日志中写入

[start_transaction,T],但没有写入[commit,T]的所有事务T;恢复时必须回滚这些事务以

取消他们对数据库的影响。此外,还必须对日志中记录的已提交事务的所有写操作进行恢复,

这样他们对数据库的作用才可根据这些记录重做。需要注意的是,必须将日志文件保存在磁

盘上。在事务到达提交点以前,还未写到磁盘的日志的任何部分,必须被写入磁盘,这称为事务提交前强制写(force writing)日志。

4)日志,档案库和检查点

(1)日志:为了能够从故障状态中恢复由影响的事务,系统维护一个日志(log)来保存所有影响数据库项的值的事务操作的信息,这些信息可以用于故障时的恢复。日志保存在磁盘上,这样除了磁盘和灾难性故障外,它不会受到任何影响。另外,日志会被定期备份到归档存储设备(例如磁带)中,以预防磁盘和灾难性故障。下面列出的是日志的条目类型(称为日志记录)和每个类型设计的相关动作。在条目中。T表示唯一事务标识(transaction_id)用于标识每个事务。

(2)档案库:一个大型的系统一天可以很容易地产生大量的Log记录.因此,将日志全部存放在盘中是不现实的。故一般将日志划分为两部分,一部分是当前活动的联机部分,存放在直接存取设备上,称为直接存取数据集(direct access data set)或简称日志数据集(log data set).另一部分是档案存储部分,存放在二级存储设备上,例如磁带上。每当数据集满时就转存到档案存储设备中去。存放日志的档案存储设备称日志档案库(log archive).为了防止因介质故障而破坏数据库,要定期将整个数据库的全部内容转储到档案库中去。存放数据库的档案存储设备称数据库档案库(DB archive).

(3)检查点:为了便于恢复,在日志中增加一类新的记录——检查点(checkpoint),以标识检查点前已执行完的事务是正确的,增加一个重启动文件。

2.2.5 事务故障的恢复

1) 事务恢复的原则

孤立和逐步退出事务的原则:对于不影响其他事务的可排除性局部故障.例如事务操作的删除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务孤立地和逐步地退出.将其所做过的修改复原,即做UND0。

成功结束事务原则:成功结束事务所做过的修改应超越各种故障而存在,也就是重做(REDO)它所做过的所有修改数据库的操作。

夭折事务的原则:若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消全部事务,恢复到初态:这有两种做法,一种是利用数据库的备份实现;另一种是按逆向顺序操作,复原其启动以来所做过的一切修改。

2) 本地事务的恢复

本地事务的恢复过程类似于集中式数据库系统中事务的恢复。当故障排除后,由局部事

务管理器的恢复子系统执行事务恢复,过程如图所示。

3)分布式事务的恢复

在分布式事务恢复中,本地事务的恢复类同于集中式事务的恢复,由本地事务管理器具体执行;而整个分布式事务的恢复由分布式事务管理器与本地事务管理器协同完成。

图6分布式事务恢复的参考模型

3 分布式数据库中的并发控制

3.1 并发控制的概述

并发控制是指在多用户的环境先,对数据库进行并发操作进行规范的机制。并发控制是以事务为单位进行的,其作用主要是协调同一时间访问同一数据库文件的多个事务之间的关系,

防止这些事务间发生冲突,产生一个可串行化得调度。如果不对并发执行的程序进行必要的控制,那么即使没有故障和程序出错也会破坏数据库的一致性和完整性。因此,一个数据库系统有无并发控制机制,以及并发控制机制的优劣是衡量一个数据库系统功能强弱和性能好坏的重要标志之一

3.2 并发的目的

并发控制是分布式数据库系统中分布式事务管理的基本任务之一,在数据库管理系统中对事务采用并发机制的主要目的有两个:

1)改善系统的资源利用率

对于一个事务来讲,在不同的执行阶段需要的资源不同,有时需要CPU,有时需要访问磁盘,有时需要I/O、有时需要通信如果事务串行执行,有些资源可能会空闲;如果事务并发执行,则可以交叉利用这些资源,有利于提高系统资源的利用率

2)改善短事务的响应时间

设有两个事务T1 和T2,其中T1是长事务,交付系统在先;T2是短事务,交付系统比T1稍后。如果串行执行,则须等T1执行完毕后才能执行T2。而T2的响应时间会很长。一个长事务的响应时间长一些还可以得到用户的理解,而一个短事务的响应时间过长,用户一般难以接受。

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

3.3 并发控制的方法

分布式并发控制的主要目的是保证分布事务和分布式数据库的一致性, 实现分布事务的可串行性, 保持事务具有良好的并发度以保证系统具有用户满意的效率。

分布式并发控制技术是以集中式数据库的并发控制技术为基础, 针对分布式系统的特点扩充而来的。集中式数据库的并发控制是以可串行性为准则来检验并发控制方法的正确性, 这一点在分布式数据库系统中同样起作用。在分布式系统中, 每个节点上的事务是可以串行的, 而不同节点的事务处理则完全是可以并行的。

可以假定每个局部结点都是以集中式数据库的并发控制机制为基础, 在局部结点上己实现了局部的可串行化调度, 那么分布式并发控制重点就是要构造一个可保证全局顺序的可串行化调度。即:

(1)每个局部结点的调度S 是可串行化的;

(2)可通过一个等价性获得一个分布事务T1,T2,?,Tn 的全局顺序。

常用的分布式并发控制方法有基于封锁的方法、时标方法及乐观并发控制方法, 其中基于封锁的方法为大多数实际系统所采用。

3.3.1 封锁方法

封锁方法是最常用的并发控制方法。它的基本思想是: 要求一事务在对一数据对象进行操作前必须先申请对该数据对象的封锁(Lock), 获准后才能进行操作。如果该数据对象己经被其它事务封锁, 且操作方式冲突, 那么该事务必须处于等待状态, 直到该数据对象被释放为止。确切的控制则由封锁类型决定, 封锁方法通过规定相应的加锁原则和封锁相容机制实现冲突操作的可串行调度。最简单的封锁模型有共享锁(Share Locks 简称S 锁)和排它锁(Exclusive Locks, 简称X 锁)两种。

在该模型中, S 锁是对数据项进行读操作时要加的锁, X 锁是对数据项进行写入操作时要加的锁。S 锁和X 锁的相容矩阵如表1 所示, 其中列表示锁的持有者, 行表示锁的申请者: “十”表示相容, “一”表示不相容。

S 锁与X 锁的相容性矩阵从该矩阵中可以看出, 只要一事务拥有对数据对象的X 锁,就禁止其它事务访问该数据。如果两事务同时以互斥方式申请对同一数据对象的封锁, 则说这两个事务发生冲突。当可共享时事务可并发执行, 当排斥时事务需串行执行。

3.3.2 基于时标的并发控制方法

时标并发控制方法的基本思想是: 利用系统内唯一的事务时标和数据对象上记录的最新读和写的时标来保证数据库及事务所得结果的一致性。每个事务在被激活时分配一个时标, 这个时标可以唯一标识一个事务和事务的激活次序。事务中的操作拥有该事务的时标, 事务对数据对象进行操作时把自己的时标赋给该数据对象, 当事务间存在冲突操作时, 冲突操作的执行次序由时标决定, 时标小的先执行, 时标大的后执行。

当一个事务的时标大于另一个事务的时标时, 该事务被中止, 重新启动后被赋以另一个时标。该方法的最大优点是事务不会出现中断, 因而不会发生无限期的等待, 所以也不存在死锁的现象。采用这种方法的事务具有较好的并发度。但是该方法也存在一些缺点: 首先, 它是采用重启的方法作为保持事务全局顺序的基本手段, 重启意味着要退回到事务的原始起点, 因此对事务(特别是长事务)来说其代价是比较大的; 其次, 在冲突发生比较多情况下, 重启次数过多会导致大量的浪费; 再次, 在分布式系统中维护一个全局统一的时标并不容易。

采用时标的并发控制算法主要有两种: 基本时标方法和保守时标方法。基本时标方法的规则是:

(1)每个事务在激活时得到系统赋予的时标;

(2)该事务在执行每一个读写操作时均具有该事务的时标;

(3)对于每一个数据项x, 记录了最大读操作的时标RTM(x)和最大写操作的时标的WTM(x);

(4)假设TS 为对x 进行读操作的时标, 如果TS

(5)假设TS 为对x 进行写操作的时标, 如果TS

在基本时标方法中, 由于不存在等待状态, 不会产生死锁问题, 因此也就不需死锁检测和解除机制。它的主要缺点是事务重新启动的次数较多。

为了解决基本时标方法存在大量事务重启的问题, 人们提出了保守时标方法。该方法的主要特点是不拒绝任何操作, 因此不会重新启动事务。其处理方法是: 当冲突发生时, 把时标大的操作缓冲起来, 等待时标小的操作执行完毕后再执行被缓冲起来的操作, 所以它不拒绝任何操作。但由于保守时标方法中有等待状态,因此可能出现死锁的情况。另外还有可能出现某一场地被阻塞的情况。

3.3.3 乐观并发控制方法

与封锁方法和时标方法把冲突操作暂时停止或拒绝执行不同, 乐观方法总是让一事务执行完成。该方法的一个基本前提是事务间极少发生冲突, 大多数事务可以无冲突正确执行完毕。因此可以不考虑冲突, 让事务执行完毕, 把写操作的结果暂时保存,而不是对数据库进行操作。事务结束之后, 由一个专门的检测确认过程来检测事务的执行是否可串行化, 若通过检测, 则把写操作的结果永久化, 即写入到数据库中去, 否则重新启动该事务。为完成上述检测, 必须保留事务执行时的某些信息, 直到检测执行完成为止。乐观并发控制方法的执行过程分成三个阶段:

(1)读出阶段(read phase): 读出所需的数据项, 进行数据处理并决定回写结果的值, 然后把此值保存在一个暂存空间, 而不是写入数据库;

(2)检测阶段(validation phase): 检测对数据库的更新操作是否会引起数据库的不一致性。若通过检测, 则执行(3), 否则重新启动该事务;

(3)写入阶段(write phase): 把(1)中暂存的数据写入数据库。在该方法中, 读出阶段是事务执行的主要阶段; 检测阶段是该方法的关键阶段, 用于检查事务所进行的更新是否会破坏数据库的一致性, 如有这种可能性则应采取相应的措施; 写入阶段则实际完成对数

据库的更新操作。分布式并发控制方法的检测主要以数据对象上的时标及事务上的时标为基本手段。目前这种方法仍停留在研究阶段, 实际上很少使用。

4 结束语

本文通过阐述了分布式数据库系统的概念以及分布式事务管理以及数据库并发控制,了解到了数据库的功能是强大的,面对目前的信息化社会,在整理、查找、分析数据方面是一个强有力的工具。并发控制是分布式数据库系统为了适应多用户操作所必须解决的问题。各种分布式数据库并行控制算法有其各自的优点和缺点,分布式数据系统是在集中式数据库系统技术的基础上发展起来的,并发控制也是分布式数据库研究的最关键热点问题之一。

参考文献:

[1] 分布式数据库系统及其应用邵佩英著科学出版社 2005.3:105-107

[2] 基于分布式数据库系统的故障恢复技术研究张传宏苗苗著信息资源建设与管理 2007.9

[3] 分布式并发控制技术弓耀龙著山西电子技术 2010.4

[4] 分布式数据库并发控制方法研究蒋亚虎著数据库及信息管理 2007.7

[5] 分布式数据库系统中的事务管理杨志伟著内蒙古科技与经济 2008.4

[6] 分布式数据库操作中的并行控制理论与算法胡忠顺著上海海运学院学报1997.5

[7] 分布式并发控制算法分析[ J]. 王学军. 福建电脑,2006( 12): 74, 86- 87.

[8] 分布式数据库系统实现技术. 周龙祥北京科学出版社 1998

分布式数据库的并发控制读书报告

读书报告 信息学院计算机科学与技术 杨凌雯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.串行调度

分布式数据库管理系统简介

分布式数据库管理系统简介 一、什么是分布式数据库: 分布式数据库系统是在集中式数据库系统的基础上发展来的。是数据库技术与网络技术结合的产物。 分布式数据库系统有两种:一种是物理上分布的,但逻辑上却是集中的。这种分布式数据库只适宜用途比较单一的、不大的单位或部门。另一种分布式数据库系统在物理上和逻辑上都是分布的,也就是所谓联邦式分布数据库系统。由于组成联邦的各个子数据库系统是相对“自治”的,这种系统可以容纳多种不同用途的、差异较大的数据库,比较适宜于大范围内数据库的集成。 分布式数据库系统(DDBS)包含分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。 在分布式数据库系统中,一个应用程序可以对数据库进行透明操作,数据库中的数据分别在不同的局部数据库中存储、由不同的DBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起。 一个分布式数据库在逻辑上是一个统一的整体:即在用户面前为单个逻辑数据库,在物理上则是分别存储在不同的物理节点上。一个应用程序通过网络的连接可以访问分布在不同地理位置的数据库。它的分布性表现在数据库中的数据不是存储在同一场地。更确切地讲,不存储在同一计算机的存储设备上。这就是与集中式数据库的区别。从用户的角度看,一个分布式数据库系统在逻辑上和集中式数据库系统一样,用户可以在任何一个场地执行全局应用。就好那些数据是存储在同一台计算机上,有单个数据库管理系统(DBMS)管理一样,用户并没有什么感觉不一样。 分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性。 分布式数据库系统是一个客户/服务器体系结构。 在系统中的每一台计算机称为结点。如果一结点具有管理数据库软件,该结点称为数据库服务器。如果一个结点为请求服务器的信息的一应用,该结点称为客户。在ORACLE客户,执行数据库应用,可存取数据信息和与用户交互。在服务器,执行ORACLE软件,处理对ORACLE 数据库并发、共享数据存取。ORACLE允许上述两部分在同一台计算机上,但当客户部分和服务器部分是由网连接的不同计算机上时,更有效。 分布处理是由多台处理机分担单个任务的处理。在ORACLE数据库系统中分布处理的例子如: 客户和服务器是位于网络连接的不同计算机上。 单台计算机上有多个处理器,不同处理器分别执行客户应用。

实验15 事务与并发控制

实验十五事务与并发控制 【实验目的与要求】 1.掌握数据库事务的概念 2.熟悉数据库的四个特性 3.熟练掌握数据库事务的实现方法 【实验内容与步骤】 15.1.SQL Server数据库事务基础知识 1.事务的概念( Transaction ) 所谓事务是用户定义的一个数据库操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。 关系数据库中,事务可以是一条SQL语句、一组SQL语句。 在SQL语言中,定义事务的语句有三条: Begin Transaction 开始 Commit 结束 Rollback 回滚 2.事务开始:BEGIN TRANSACTION 标记一个显式本地事务的起始点。BEGIN TRANSACTION将@@TRANCOUNT 加1。 语法结构: BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable [ WITH MARK [ 'description' ] ] ] 参数说明: transaction_name:是给事务分配的名称。transaction_name 必须遵循标识符规则,但是不允许标识符多于32 个字符。仅在嵌套的https://www.360docs.net/doc/1017767804.html,MIT 或BEGIN...ROLLBACK 语句的最外语句对上使用事务名。 @tran_name_variable:是用户定义的、含有有效事务名称的变量的名称。必须用char、varchar、nchar 或nvarchar 数据类型声明该变量。 WITH MARK ['description']:指定在日志中标记事务。Description 是描述该标记的字符串。 如果使用了WITH MARK,则必须指定事务名。WITH MARK 允许将事务日志还原到命名标记。 4.事务提交:COMMIT TRANSACTION 标志一个成功的隐性事务或用户定义事务的结束。如果@@TRANCOUNT 为1,COMMIT TRANSACTION 使得自从事务开始以来所执行的所有数据修改成为数据库的永

浅谈分布式并发控制

浅谈分布式并发控制 摘要:本文首先介绍了分布式系统的基本概念和并发控制的原理及目的方法。着重描述了几种基本的分布式并发控制的技术,例如基于锁的并发控制技术、基于时间戳的并发控制技术和基于事务的并发控制技术,等等。 关键字:分布式并发控制,基于锁的并发控制,基于时间戳的并发控制,基于事务的并发控制技术 0.引言 计算机现在一般不再单独使用,办公室工作站常与远程打印机、文件服务器、数据库相联。家庭计算机也可通过调制解调器访问电子信息,如电子邮件、公告板、web节点等。大的公司和企业有成百上千乃至上万台计算机通过网络连接起来,协同控制诸如汽车生产、石油提炼、钢铁冶炼、食品生产、电站运行以及商品的设计、开发、销售等。分布式计算已经成为必不可少的技术。 1.分布式系统 分布式计算机系统是一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的计算机系统,各处理器通过互连网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这样就加快了系统的处理速度,简化了主机的逻辑结构,特别适合于工业生产线自动控制和企事业单位的管理,成本低,易于维护,成为计算机在应用领域发展的一个重要方向。 分布式处理系统是一个紧密耦合的系统。并且,分布式处理系统一般有比较复杂的互连网络。它和网络的区别是:计算机网络虽然与分布式计算机系统有相同之处,但二者并不等同。分布式系统的最大特点是整个系统中的各计算机和系统资源对用户都是透明的,也就是说,用户通过键入命令就可以运行程序,由操作系统为用户选择一台最合适的计算机来运行他的程序,并把运行结果传到合适的地方,而这些都不需要用户的干预。网络则一般不对用户透明,对数据的处理需要有用户的参予。一般,分布式系统是计算机网络的一个特例。 分布式系统常常意味着各组成部分之间相当严格的同步以达到协同操作、远程过程调用(rpc:remoteproce durecall)或消息传送,而网络系统则意味基于消息的通信、可能很长的延迟(在收发消息之间)、松散的同步性以及没有全局的目标。事实上,在网络和分布式系统之间并没有很清晰的界限。但人们一般认为分布式处理的主要特征为:各部件是合作、

分布式数据库总结(申德荣)

第一章分布式数据库系统概述 一、分布式数据库的发展 1、分布式数据库的发展: ①集中式数据库管理系统的局限性:a.通讯瓶颈;b.响应速度。 ②推动分布式数据库发展的动力:a.应用需求;b.硬件环境的发展。 二、分布式数据库系统的定义: 分布式数据库系统,通俗地说,是物理上分散而逻辑上集中的数据库系统。分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通常是集中是数据库系统)连接起来,共同组成一个统一的数据库系统。 三、分布式数据库系统的特点: a.物理分布性:数据不是存放在一个站点上 b.逻辑整体性:是与分散式数据库系统的区别 c.站点自治性:是与多处理机系统的区别 d.数据分布透明性 e.集中与自治相结合的控制机制 f.存在适当的数据冗余度 g.事务管理的分布性 四、分布式数据库系统的分类 按局部数据库管理系统的数据模型分类:同构性(homogeneous)(分为同构同质型和同构异质型)DDBS和异构性(heterogeneous)DDBS 按分布式数据库系统的全局控制系统类型分类:全局控制集中型DDBS,全局控制分散型DDBS,全局控制可变型DDBS。

五、分布式数据库中数据的独立性和分布透明性 所谓数据独立性是指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必关心全局数据的分布情况,包括全局数据的逻辑分片情况、逻辑片段站点位置的分配情况,以及各站点上数据库的数据模型等。也就是说,全局数据的逻辑分片、片段的物理位置分配,各站点数据库的数据模型等情况对用户和用户程序透明。所以,在分布式数据库中分布独立性也称为分布透明性。 六、分布式数据库系统的体系结构、组成成分 集中式数据库管理系统结构: a. DB(数据库) b. DBMS(集中式数据库管理系统) c. DBA(数据库管理员) 分布式数据库管理系统(DDBMS)结构: a. LDB(局部数据库) b. GDB(全局数据库) c. LDBMS (局部数据库管理系统) d. GDBMS (全局数据库管理系统) e. LDBA(局部数据库管理员) f. GDBA (全局数据库管理员) 七、分布式数据库系统的特性: 1. 数据透明性:a.分布透明性b. 分片透明性c. 复制透明性 2. 场地自治性:a. 设计自治性b. 通信自治性c. 执行自治性 八、分布式数据库系统的优点: 分布式数据库系统是在集中式数据库系统的基础上发展来的,比较分布式数据库系统与集中式数据库系统,可以发现分布是数据库系统具有下列优点: 1.更适合分布式的管理与控制。分布式数据库系统的结构更适合具有地理分布特性的组织或机构使用,允许分布在不同区域、不同级别的各个部门对其自身的数据实行局部控制。例如:实现全局数据在本地录入、查询、维护,这时由于计算机资源靠近用户,可以降低通信代价,提高响应速度,而涉及其他场地数据库中的数据只是少量的,从而可以大大减少网络上的信息传输量;同时,局部数据的安全性也可以做得更好。

并发控制课后答案-简述并发控制

第八章并发控制 习题解答和解析 1. 1.在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。 2. 2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。 (1)丢失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。 (2)不可重复读(Non -Repeatable Read)不可重复读是指事务T1读取数据后,事务T2 执行更新操作,使T1无法再现前一次读取结果。不可重复读包括三种情况:详见《概论》8.1(P266)。 (3)读"脏"数据(Dirty Read)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。 避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 3. 3.什么是封锁? 答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。 4. 4.基本的封锁类型有几种?试述它们的含义。 答:基本的封锁类型有两种:排它锁(Exclusive Locks, 简称 X 锁 )和共享锁(Share Locks,简称 S 锁)。 排它锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。 共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。 5.如何用封锁机制保证数据的一致性 ? 答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T1在对A进行修改之前先对A执行XLock(A),即对A加X锁。这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后 的值,再按此新的A值进行运算。这样就不会丢失 T1的更新。

事务调度与并发控制

四级数据库第八章-事务调度与并发控制8.1 并发控制概述 在第七章中己经讲到,事务是并发控制的基本单位,保证事务ACID特性是事务处理的重要任务,而事务ACID特性可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。为了保证事务的隔离性更一般,为了保证数据库的一致性,DBMS需要对并发操作进行正确调度。这些就是数据库管理系统中并发控制机制的责任。 下面先来看一个例子,说明并发操作带来的数据的不一致性问题。 考虑飞机订票系统中的一个活动序列: ①甲售票点(甲事务)读出某航班的机票余额A,设A=16; ②乙售票点(乙事务)读出同一航班的机票余额A,也为16; ③甲售票点卖出一张机票,修改余额A A-l,所以A为15,把A写回数据库; ④乙售票点也卖出一张机票,修改余额A A-l,所以A为15,把A写回数据库。结果明明卖出两张机票,数据库中机票余额只减少1。 这种情况称为数据库的不一致性。这种不一致性是由并发操作引起的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若按上面的调度序列执行,甲事务的修改就被丢失。这是由于第④步中乙事务修改A并写回后覆盖了甲事务的修改。 仔细分析并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据,如图8.1所示。 1.丢失修改(Lost Update) 两个事务T1和T2。读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失,如图8.1(a)所示。上面飞机订票例子就属此类。

图8.1 2.不可重复读(Non-Repeatable Read) 不可重复读是指事务T1读取数据后,重复T2执行更新操作,使T1无法再现前一次读 取结果。具体地讲,不可重复读包括三种情况: (1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值。例如在图8.1(b)中,T1读取B=100进行运算,T2读取同一数据B对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B己为200,与第1次读取值不一致。 (2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘地消失了。 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影(Phantom Row)现象。

分布式数据库系统复习题

一、何为分布式数据库系统?一个分布式数据库系统有哪些特点? 答案:分布式数据库系统通俗地说,是物理上分散而逻辑上集中的数据库系统。分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一的数据库系统。因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。一个分布式数据库系统具有如下特点: 物理分布性,即分布式数据库系统中的数据不是存储在一个站点上,而是分散存储在由计算机网络连接起来的多个站点上,而且这种分散存储对用户来说是感觉不到的。 逻辑整体性,分布式数据库系统中的数据物理上是分散在各个站点中,但这些分散的数据逻辑上却构成一个整体,它们被分布式数据库系统的所有用户共享,并由一个分布式数据库管理系统统一管理,它使得“分布”对用户来说是透明的。 站点自治性,也称为场地自治性,各站点上的数据由本地的DBMS管理,具有自治处理能力,完成本站点的应用,这是分布式数据库系统与多处理机系统的区别。 另外,由以上三个分布式数据库系统的基本特点还可以导出它的其它特点,即:数据分布透明性、集中与自治相结合的控制机制、存在适当的数据冗余度、事务管理的分布性。 二、简述分布式数据库的模式结构和各层模式的概念。 分布式数据库是多层的,国内分为四层: 全局外层:全局外模式,是全局应用的用户视图,所以也称全局试图。它为全局概念模式的子集,表示全局应用所涉及的数据库部分。 全局概念层:全局概念模式、分片模式和分配模式 全局概念模式描述分布式数据库中全局数据的逻辑结构和数据特性,与集中式数据库中的概念模式是集中式数据库的概念视图一样,全局概念模式是分布式数据库的全局概念视图。分片模式用于说明如何放置数据库的分片部分。分布式数据库可划分为许多逻辑片,定义片段、片段与概念模式之间的映射关系。分配模式是根据选定的数据分布策略,定义各片段的物理存放站点。 局部概念层:局部概念模式是全局概念模式的子集。局部内层:局部内模式 局部内模式是分布式数据库中关于物理数据库的描述,类同集中式数据库中的内模式,但其描述的内容不仅包含只局部于本站点的数据的存储描述,还包括全局数据在本站点的存储描述。 三、简述分布式数据库系统中的分布透明性,举例说明分布式数据库简单查询的 各级分布透明性问题。 分布式数据库中的分布透明性即分布独立性,指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必关心全局数据的分布情况,包括全局数据的逻辑分片情况、逻辑片段的站点位置分配情况,以及各站点上数据库的数据模型等。即全局数据的逻辑分片、片段的物理位置分配,各站点数据库的数据模型等情况对用户和用户程序透明。

数据库实验报告:事务与并发控制

1.实验七:事务与并发控制 1.1.实验目的 1.掌握事务机制,学会创建事务。 2.理解事务并发操作所可能导致的数据不一致性问题,用实验展现四种数据不一致性 问题:丢失修改、读脏数据、不可重复读以及幻读现象。 3.理解锁机制,学会采用锁与事务隔离级别解决数据不一致的问题。 4.了解数据库的事务日志。 1.2.实验内容 假设学校允许学生将银行卡和校园卡进行绑定,在student数据库中有如下的基本表,其中校园卡编号cardid即为学生的学号: icbc_card(studcardid,icbcid,balance) //校园卡ID,工行卡ID,银行卡余额campus_card(studcardid,balance) //校园卡ID,校园卡余额 数据创建的代码: use student createtable campus_card ( studcardid Char(8), balance Decimal(10,2)) createtable icbc_card ( studcardid Char(8), icbcid Char(10), balance Decimal(10,2) )

insertinto campus_card values('20150031', 30) insertinto campus_card values('20150032', 50) insertinto campus_card values('20150033', 70) insertinto icbc_card values('20150031','2015003101', 1000) insertinto icbc_card values('20150032','2015003201', 1000) insertinto icbc_card values('20150033','2015003301', 1000) 针对以上数据库按照要求完成下列实验: 1.编写一个事务处理(begin tran)实现如下的操作:某学号为20150032的学生要从银 行卡中转账200元到校园卡中,若中间出现故障则进行rollback。(15分)settransactionisolationlevel repeatableread

数据库原理习题与答案 第9章数据库系统恢复和并发控制技术

第九章.数据库系统恢复和并发控制技术 习题: 一.填空题 1.数据库保护包含数据的。 2.是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。 3.DBMS的并发控制的主要方法是机制。 4.有两种基本的锁,它们是和。 5.对并发操作若不加以控制,可能带来的不一致性有、和。 6.数据库系统在运行过程中,可能会发生故障,故障主要有、、介质故障和四类。 7.数据库系统是利用存储在外存上其他地方的来重建被破坏的数据库,它主要有两种:和。 二.选择题 1.下面哪个不是数据库系统必须提供的数据控制功能。 A.安全性 B.可移植性 C.完整性 D.并发控制 2.事务的原子性是指。 A.事务中包括的所有操作要么都做,要么都不做 B.事务一旦提交,对数据库的改变是永久的 C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D.事务必须是使数据库从一个一致性状态变到另一个一致性状态 3.多用户的数据库系统的目标之一是使它的每个用户好像面对着一个单用户的数据库一样使用它,为此数据库系统必须进行。 A.安全性控制 B.完整性控制 C.并发控制 D.可靠性控制 4.设有两个事务T1、T2,其并发操作如下图所示,下面评价正确的是________。 T1 T2 ①读A=10 ②读A=10 ③A=A-5写回 ④A=A-8写回

A该操作不存在问题B该操作丢失修改 C该操作不能重复读D该操作读“脏”数据 5.若事务T对数据R已加X锁,则其他对数据R 。 A.可以加S锁,不能加X锁 B.不能加S锁,可以加X锁 C.可以加S锁,也可以加X锁 D.不能加任何锁 6.对并发控制不加以控制,可能会带来。 A.不安全 B.死锁 C.死机 D.不一致 7.用来记录对数据库中数据进行的每一次更新操作。 A.后援副本 B.日志文件 C.数据库 D.缓冲区 三.简答题 1.试述事务的概念和事务的四个特性。 2.数据库中为什么要有恢复子系统,它的功能是什么? 3.数据库运行中可能发生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据? 4.数据库恢复的基本技术有哪些? 5.登记日志文件时,为什么必须先写日志文件,后写数据库? 6.在数据库中为什么要并发控制? 7.什么是封锁? 8.基本的封锁有哪几种?试述它们的含义。 9.不同封锁协议与系统一致性级别的关系是什么? 10.请给出预防死锁的若干方法。 11.什么样的并发调度是正确的调度? 12.试述两段锁协议的概念。

事务并发控制中的两段锁和可串行化冲突图的对比

文章编号:1000-2375(2005)01-0019-05 事务并发控制中的两段锁和 可串行化冲突图的对比 金 蓉,李跃新 (湖北大学数学与计算机科学学院,湖北武汉430062) 摘 要:数据库中并发操作一般分为数据级和事务级两种,由于资源的竞争可能引起数据级的冲突和事 务级的冲突,因此需要对并发执行的事务转化为某个可串行化调度,从而确保数据库的一致性.目前并发控制的方法有很多,从锁和非锁机制两个方面分析了两段锁和可串行化冲突图两种并发控制的规则和数据结构及分类,并从事务的冲突可串行化方面和结构上分析了各自的性能和优缺点. 关键词:锁;两段锁协议;可串行化冲突图 中图分类号:TP311 文献标志码:A 收稿日期:2004-03-25 作者简介:金 蓉(1979-  ),女,硕士生1 引 言 数据库中的并发操作一般分为数据级和事务级两种,一方面在微观数据级上有数据对象的读(Read )操作和写(Write )操作,另一方面在宏观事务级上有事务的操作原语:终止(Abort ),开始(Begin ),提交(C ommit ),结束(End ),实质上事务中包含着对一系列数据对象的操作,因为一个事务系统主要由3个部分构成:数据项集、对数据项集的操作和控制事务存取数据的管理器(我们称为事务管理器T M ).并发控制的作用是正确协调同一时间里多个事务对数据库的并发操作,解决资源竞争问题以保证数据库的一致性和完整性. 并发控制是通过调度来确保事务的并发执行的效果等同于没有并发执行时的执行效果,也就是使事务的并发执行调度等价于事务的某个可串行化调度,从而确保数据库的一致性.可串行化简单的说就是一个并发操作等效于某个串行执行的效果,也即有相同的输出结果,与串行操作对数据库有同样的效果. 冲突有数据级的冲突和事务级的冲突,数据间的冲突体现在数据库中同时对相同的数据对象操作,事务间的冲突是由事务的数据相关性及在共享数据对象上的交互作用而引起的,通常用事务的“冲突关系”来表示. 定义1 数据对象d 上的两个操作p 、q 是“冲突”的,记为CT (d ,p ,q ),当且仅当S (S (s ,p ),q )≠S (S (s ,q ),p )∨R (s ,p )≠R (S (s ,q ),p )∨R (s ,q )≠R (S (s ,p ),q ).其中,S (s ,p )和R (s ,p )分别表示操作p 对d 的给定状态s 所产生的结果状态和结果输出(返回). 由定义可知,两个或多个数据操作产生冲突的条件是1)它们属于不同的事务;2)都访问数据库中相同的数据对象;3)并且至少有一个是写操作否则就不会产生冲突. 定义2 两个事务t 1、t 2是“冲突”的,记为t 1CR t 2,是指它们包含了(至少)一对冲突操作.即对于任何t 1≠t 2,t 1CR t 2,当且仅当?d 、?p ,q (p (d )∈t 1∧q (d )∈t 2∧CT (d ,p ,q ). 事务间的冲突归根结底集中在数据操作的冲突上,因此解决冲突最初的方法是对数据对象采用锁机制,而锁可以分为读锁和写锁,当数据对象加了读锁后可以再加读锁但不能加写锁,因此读锁是共享的,当数据对象加了写锁后就不能加其他任何锁,因此写锁是排它的,显然读锁较写锁的并发度高. 第27卷第1期2005年3月湖北大学学报(自然科学版)Journal of Hubei University (Natural Science ) V ol.27 N o.1 Mar.,2005

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

分布式数据库系统的并发控制算法综述 摘要:并发控制是分布式数据库事务管理中非常重要的一部分,其性能的优劣是衡量分布式数据库系统功能强弱和性能好坏的重要标志之一。并发控制是分布式数据库系统为了适应多用户操作所必须解决的问题。分布式数据系统是在集中式数据库系统技术的基础上发展起来的,并发控制也是分布式数据库研究的最关键热点问题之一。 关键词:分布式数据库系统并发控制事务算法 一.分布式数据库系统的概述 分布式数据库系统是在集中式数据库系统的基础上发展起来的,是计算机技术和网络技术结合的产物。分布式数据库系统(DDBS)包含分布式数据库管理系统(DDBMS)和分布式数据库(DDB)。 在分布式数据库系统中,一个应用程序可以对数据库进行透明操作,数据库中的数据分别在不同的局部数据库中存储、由不同的 DBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起[1]。一个应用程序通过网络的连接可以访问分布在不同地理位置的数据库。它的分布性表现在数据库中的数据不是存储在同一场地。更确切地讲,不存储在同一计算机的存储设备上。这就是与集中式数据库的区别。 从用户的角度看,一个分布式数据库系统在逻辑上和集中式数据库系统一样,用户可以在任何一个场地执行全局应用。就好那些数据是存储在同一台计算机上,有单个数据库管理系统(DBMS)管理一样,用户并没有什么感觉不一样。 分布式数据库系统适合于单位分散的部门,允许各个部门将其常用的数据存储在本地,实施就地存放本地使用,从而提高响应速度,降低通信费用。分布式数据库系统与集中式数据库系统相比具有可扩展性,通过增加适当的数据冗余,提高系统的可靠性。在集中式数据库中,尽量减少冗余度是系统目标之一.其原因是,冗余数据浪费存储空间,而且容易造成各副本之间的不一致性.而为了保证数据的一致性,系统要付出一定的维护代价.减少冗余度的目标是用数据共享来达到的。而在分布式数据库中却希望增加冗余数据,在不同的场地存储同一数据的多个副本,其原因是:①.提高系统的可靠性、可用性当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因一处故障而造成整个系统的瘫痪。 ②.提高系统性能系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。 二.并发控制的概述 并发控制是指在多用户的环境先,对数据库进行并发操作进行规范的机制。并发控制是以事务为单位进行的,其作用主要是协调同一时间访问同一数据库文件的多个事务之间的关系,防止这些事务间发生冲突,产生一个可串行化得调度。如果不对并发执行的程序进行必要的控制,那么即使没有故障和程序出错也会破坏数据库的一致性和完整性。因此,一个数据库系统有无并发控制机制,以及并发控制机制的优劣是衡量一个数据库系统功能强弱和性能好坏的重要标

分布式数据库系统(DDBS)概述.

分布式数据库系统(DDBS概述 一个远程事务为一个事务,包含一人或多个远程语句,它所引用的全部是在同一个远程结点上.一个分布式事务中一个事务,包含一个或多个语句修改分布式数据库的两个或多个不同结点的数据. 在分布式数据库中,事务控制必须在网络上直辖市,保证数据一致性.两阶段提交机制保证参与分布式事务的全部数据库服务器是全部提交或全部回滚事务中的语句. ORACLE分布式数据库系统结构可由ORACLE数据库管理员为终端用户和应用提供位置透明性,利用视图、同义词、过程可提供ORACLE分布式数据库系统中的位置透明性. ORACLE提供两种机制实现分布式数据库中表重复的透明性:表快照提供异步的表重复;触发器实现同步的表的重复。在两种情况下,都实现了对表重复的透明性。 在单场地或分布式数据库中,所有事务都是用COMMIT或ROLLBACK语句中止。 二、分布式数据库系统的分类: (1 同构同质型DDBS:各个场地都采用同一类型的数据模型(譬如都是关系型,并且是同一型号的DBMS。 (2同构异质型DDBS:各个场地采用同一类型的数据模型,但是DBMS的型号不同,譬如DB2、ORACLE、SYBASE、SQL Server等。 (3异构型DDBS:各个场地的数据模型的型号不同,甚至类型也不同。随着计算机网络技术的发展,异种机联网问题已经得到较好的解决,此时依靠异构型DDBS就能存取全网中各种异构局部库中的数据。 三、分布式数据库系统主要特点: DDBS的基本特点: (1物理分布性:数据不是存储在一个场地上,而是存储在计算机网络的多个场地上。 逻辑整体性:数据物理分布在各个场地,但逻辑上是一个整体,它们被所有用户(全局用户共享,并由一个DDBMS统一管理。 (2场地自治性:各场地上的数据由本地的DBMS管理,具有自治处理能力,完成本场地的应用(局部应用。 (3场地之间协作性:各场地虽然具有高度的自治性,但是又相互协作构成一个整体。 DDBS的其他特点 (1数据独立性 (2集中与自治相结合的控制机制 (3适当增加数据冗余度

分布式系统的应用

分布式系统的应用 一、前言 在20世纪50年代,计算机是串行处理机,一次运行一个作业直至完成。这些处理机通过一个操作员从控制台操纵,而对于普通用户则是不可访问的。在60年代,需求相似的作业作为一个组以批处理的方式通过计算机运行以减少计算机的空闲时间。同一时期还提出了其他一些技术,如利用缓冲、假脱机和多道程序等的脱机处理。70年代产生了分时系统,不仅作为提高计算机利用率的手段,也使用户离计算机更近了。分时是迈向分布式系统的第一步:用户可以在不同的地点共享并访问资源。80年代是个人计算的10年;人们有了他们自己专用的机器。 随着基于微处理器的系统所提供的出色的性能/价格比和网络技术的稳步提高,一个新的梦想成为可能一分布式计算。当用户需要完成任何任务时,分布式计算提供对尽可能多的计算机能力和数据的透明访问,同时实现高性能与高可靠性的目标。在过去的10年里,人们对分布式计算系统的兴趣迅猛发展。有关分布式计算的主题是多种多样的,许多研究人员正在研究关于分布式硬件结构和分布式软件设计的各方面问题以开发利用其潜在的并行性和容错性。 二、分布式系统定义 当讨论分布式系统时,我们面临许多以下这些形容词所描述的不同类型:分布式的、网络的、并行的、并发的和分散的。分布式处理是一个相对较新的领域,所以还没有一致的定义。与顺序计算相比、并行的、并发的和分布式的计算包括多个PE间的集体协同动作。这些术语在范围上相互覆盖,有时也交换使用。 ●“并行的”意味着从一个单一控制线程对数据集的锁步(10ckstep)动作。在并行计算机级别上,单指令流多数据流(slMD)计算机就是一个使用多个数据处理单元在许多数据项上同时进行相同或相似操作的例子。 ●“并发的”意味着某些动作可以以任意次序执行。例如,在更高级别上和在多指令流多数据流(MIMD)并行计算机上进行部分独立的操作。 ●“分布式的”意味着计算的成本或性能取决于数据和控制的通信。 如果一个系统的部件局限在一个地方,它就是集中式的;如果它的部件在不同地方,部件之间要么不存在或仅存在有限的合作,要么存在紧密的合作,它是分散式的。当一个分散式系统不存在或仅存在有限的合作时,它就被称作网络的;否则它就被称作分布式的,表示在不同地方的部件之间存在紧密的合作。在给出分布式系统具体定义的模型中,分布式系统可以用硬件、控制、数据这三个

Informix的事务、并发控制、锁机制、隔离级别

Informix的事务、并发控制、锁机制、隔离级别 1、事务 事务是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。数据库服务器保证在事务范围内执行的操作完整且正确地提交至磁盘,否则数据库会复原至事务启动之前的状态。 一个逻辑工作单元要成为事务,必须满足所谓的ACID属性。ACID的具体含义如下: 1)A(Atomicity):操作序列要么完整的执行,否则什么都不做; 2)C(Consistency):一致性,事务执行后,保证数据库从一个一致性状态到另外一个一致性状态; 3)I(Isolation):隔离,一个事务的中间状态对其他事务不可见,即每个用户都感觉他们在单独使用数据库。隔离级别用来定义多大程度的隔离多个不同的事务; 4)D(Durability):持久性,事务的有效性,不会应用硬件或软件的失败而丢失。 2、并发控制 1)相关概念 i)隔离(+一致性) => 并发控制; ii)多个事务可以访问或修改相同的资源; iii)只要多个进程共享资源,就需要对访问进程进行排队控制; iv)在进行并发控制时,数据库内部将生成多个并发事务访问资源的操作序列表,并且每一个事务内部的各个操作都需要序列化。 2)串行调度存在的问题 在串行调度中,采用操作序列,一个事务完成了再完成另外一个,即使两个事务T1、T2更新的是数据库中不同的对象。此种方式从并发和性能角度考虑,都不能很好的利用计算机资源。 为了改善性能,需要采用非串行调度,即允许事务并发执行,即一个事务内的操作可以在其他事务提交前开始执行。 3)并发调度的常见问题 i)脏读:事务T2读取到了事务T1没有提交的结果 例如如下的操作序列会导致脏读: 事务T1读取记录,然后更新记录; 事务T2读取了更新后的记录;

分布式数据库设计方案

1.大型分布式数据库解决方案 企业数据库的数据量很大时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影响最终用户的体验;当数据量很大的时候,对数据库的装载与导出,备份与恢复,结构的调整,索引的调整等都会让数据库停止服务或者高负荷运转很长时间,影响数据库的可用性和易管理性。 分区表技术 让用户能够把数据分散存放到不同的物理磁盘中,提高这些磁盘的并行处理能力,达到优化查询性能的目的。但是分区表只能把数据分散到同一机器的不同磁盘中,也就是还是依赖于一个机器的硬件资源,不能从根本上解决问题。 分布式分区视图 分布式分区视图允许用户将大型表中的数据分散到不同机器的数据库上,用户不需要知道直接访问哪个基础表而是通过视图访问数据,在开发上有一定的透明性。但是并没有简化分区数据集的管理、设计。用户使用分区视图时,必须单独创建、管理每个基础表(在其中定义视图的表),而且必须单独为每个表管理数据完整性约束,管理工作变得非常复杂。而且还有一些限制,比如不能使用自增列,不能有大数据对象。对于全局查询并不是并行计算,有时还不如不分区的响应快。

库表散列 在开发基于库表散列的数据库架构,经过数次数据库升级,最终采用按照用户进行的库表散列,但是这些都是基于自己业务逻辑进行的,没有一个通用的实现。客户在实际应用中要投入很大的研发成本,面临很大的风险。 面对海量数据库在高并发的应用环境下,仅仅靠提升服务器的硬件配置是不能从根本上解决问题的,分布式网格集群通过数据分区把数据拆分成更小的部分,分配到不同的服务器中。查询可以由多个服务器上的CPU、I/O来共同负载,通过各节点并行处理数据来提高性能;写入时,可以在多个分区数据库中并行写入,显著提升数据库的写入速度。

数据库并发控制

数据库是一个共享资源,可以提供多个用户使用。这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个用户程序涉及大量数据的输入/输出交换,则数据库系统的大部分时间处于闲置状态。因此,为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库。但这样就会产生多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性,所以数据库管理系统必须提供并发控制机制。并发控制机制的好坏是衡量一个数据库管理系统性能的重要标志之一。 DM用封锁机制来解决并发问题。它可以保证任何时候都可以有多个正在运行的用户程序,但是所有用户程序都在彼此完全隔离的环境中运行。 一、并发控制的预备知识 (一) 并发控制概述 并发控制是以事务(transaction)为单位进行的。 1. 并发控制的单位――事务 事务是数据库的逻辑工作单位,它是用户定义的一组操作序列。一个事务可以是一组SQL 语句、一条SQL语句或整个程序。 事务的开始和结束都可以由用户显示的控制,如果用户没有显式地定义事务,则由数据库系统按缺省规定自动划分事务。 事务应该具有4种属性:原子性、一致性、隔离性和持久性。 (1)原子性 事务的原子性保证事务包含的一组更新操作是原子不可分的,也就是说这些操作是一个整体,对数据库而言全做或者全不做,不能部分的完成。这一性质即使在系统崩溃之后仍能得到保证,在系统崩溃之后将进行数据库恢复,用来恢复和撤销系统崩溃处于活动状态的事务对数据库的影响,从而保证事务的原子性。系统对磁盘上的任何实际数据的修改之前都会将修改操作信息本身的信息记录到磁盘上。当发生崩溃时,系统能根据这些操作记录当时该事

2017电子科技大学分布式系统考点

第一章概述 ?分布式系统的目标 ?资源共享(resource sharing) ?计算机通过网络连接起来,并在这个范围内有效地共享资源 ?硬件的共享,软件的共享,数据的共享,服务的共享 ?媒体流的共享(动态的资源形式) ?协同计算(collaborative computing) ?并行计算,分布式计算 分布式系统是指把多个处理机通过网络互连而构成的系统,系统的处理和控制功能分布在各个处理机上。 ?分布式系统的问题源于下面三个特点: ?并发性(concurrence) ?多个程序(进程,线程)并发执行,共享资源 ?没有全局时钟(global clock) ?每个机器都有各自的时间,没有办法做到统一,程序间的协调靠交 换消息 ?故障独立性(independent failure) ?一些进程出现故障,并不能保证其它进程都能知道 分布式的挑战异构性:网络协议, 硬件, 操作系统, 编程语言, 开发者实现方式的不同.

开放性: 可扩展性: 安全性: 机密性: 防止未经授权的个人访问资源 完整性: 防止数据被篡改和破坏 可用性: 防止对所提供服务的干扰 故障处理: 检测故障, 屏蔽故障, 故障容错, 故障恢复, 冗余策略 并发: 正确性: 多个进程并发访问共享资源,要保证被访问数据的正确性,不能出现不一致。性能: 多个并发操作保证性能 透明性: 访问透明:使用同样的操作去访问本地资源和远程资源。 位置透明: 访问资源的时候,不需要知道资源的位置。 并发透明:几个进程同时访问资源,互不干扰。 复制透明: 使用多个资源的副本来提高可靠性和性能,用户或者应用程序开发者并不需要了 解副本技术。 故障透明,移动透明,性能透明,扩展透明 第二章系统模型 ?结构模型 构成系统各部分(components, computers, procedures ) 的位置、角色和它们之间的关系,它定义了系统的各组件之 间相互交互的方式以及它们映射到下面的计算机网络的方 式。 ?客户/服务器结构

相关文档
最新文档