事务并发控制中的两段锁和可串行化冲突图的对比
数据库管理系统试题及答案
试题名称:数据库系统说明:所有答题一律写在答题纸上第 1 页共 2 页一、简答题(共5小题,每题6分,共30分)1.简述数据库、数据库管理系统与数据库系统的概念。
答:数据库:DataBase,简称DB。
是长期储存在计算机内的、有组织的、可共享的数据集合。
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库管理系统:DataBase Management System,简称DBMS,是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。
它的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护。
数据库系统:DataBase System,简称DBS,它是包含数据库的具体应用系统,由支持该应用系统的某一具体的数据库、数据库管理系统和应用程序三部分组成。
2.简述两段锁协议并说明两段锁协议和事务可串行化调度的关系。
答:所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
1、在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;2、在释放一个封锁之后,事务不再申请和获得任何其他封锁。
如果事务中所有的加锁操作都在事务的第一个解锁操作之前进行,那么这个事务是遵循两段锁协议的。
如果一个调度中的每个事务都遵循两段锁协议,那么该调度必然是冲突可串行化的。
事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。
3.简述可串行化调度和正确调度。
答:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们的结果相同,我们称这种调度策略为可串行化的调度。
可串行性是并发事务正确性的准则,按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。
4.简述数据库中的死锁现象,并简述如何使用有向图方法检测死锁。
答:死锁是指当两个或多个事务相互等待对方所拥有的锁被释放时,所产生的僵持局面。
数据库系统(下):管理与技术_哈尔滨工业大学中国大学mooc课后章节答案期末考试题库2023年
数据库系统(下):管理与技术_哈尔滨工业大学中国大学mooc课后章节答案期末考试题库2023年1.DBMS管理数据库缓冲区有四种策略:No Steal, Steal, No Force, Force。
则效率较低但不会出现问题的策略组合是_________,而效率最高最常用但会出现问题的策略组合是_________。
参考答案:No Steal+ Force,Steal + No Force;2.下列说法正确的是___________。
参考答案:两阶段封锁法是可串行化的并行调度算法;3.T1,T2是两个事务,图(a)(b)给出这两个事务的两种调度S1,S2,关于S1,S2,说法正确的选项是_____________。
【图片】参考答案:S1是不可串行化调度,S2是可串行化调度;4.若事务T对数据M已加S锁,在不改变S锁的情况下,则其它事务对数据M__________。
参考答案:可以读,但不可以写;5.关于稀疏索引和稠密索引,下列说法正确的是_______。
参考答案:如果一个搜索码的值在稠密索引中不存在,则在主文件中对应该搜索码值的记录也不存在6.关于给出的九个关系代数操作:【图片】问任何时候都能够用一趟算法实现的操作的个数是_______。
参考答案:17.主索引通常确定“表”数据的__________。
参考答案:物理顺序8.有效性确认是一种并发控制方法。
如下图(a)(b)中T和U是两个事务,X和Y是数据对象。
T要进行有效性确认,下列说法正确的是__________。
【图片】参考答案:图(a)事务T的有效性可以确认;图(b)事务T的有效性不可以确认;9.关于基于散列的两趟算法,下列说法正确的是_______。
参考答案:第一趟散列的目的是使数据子集具有某一种特性(如具有相同的散列值),而第二趟散列的目的是提高数据处理的速度。
10.关于逻辑查询优化和物理查询优化,下列说法正确的是________。
参考答案:逻辑查询优化是关系代数操作次序的优化;物理查询优化是关系代数操作实现算法选择的优化11.关于B+树,下列说法不正确的是_________。
两阶段封锁可串行化强制性的实现
1.1 可串行化调度 设 r1(X)和 w1(X) 表示对事务 T1中 X 元素的读和写操作,
A、B 之间的一致性状态,因此序列(4)不是可串行化的。 此调度序列不能实现并发控制,应予以避免。
同样,r2(X)和 w2(X)表示对事务 T2 中 X 元素的读和写操作。 2 锁
假设有事务 T1 和 T2,其动作序列如下: T1:r1(A)、w1(A)、r1(B)、w1(B) (1) T2:r2(A)、w2(A)、r2(B)、w2(B) (2)
动作 1-4 使得:A=24+10=34(B=12);
动作 5-8 使得:A=34*2=68(B=12);
动作 9-12 使得:B=12*2=24(A=68);
动作 13-16 使得:B=24+5=29(A=68)。
其结果与序列(4 )产生的结果相同。也就是说,虽然
使用了锁,却并没有使得调度序列(4)达到数据元素 A、
事务的一致性要求: z 事务只有在其 数据库某元素上申请了锁并 且还没
有释放锁时才能读或写该元素。 z 如果事务封锁某个数据库元素,此后必须为该元素
释放锁(解锁)。 调度的合法性要求: z 任何两个事务都不能封锁同一元素,除非其中一个
事务已经先释放其锁 我们用 ci (X)表示事务 Ti 请求数据库元素 X 上的锁(加 锁);ui (X)表示事务 Ti 释放它在数据库元素 X 上的锁(解 锁)。因此,使用锁的原则具体描述为: “只要事务 Ti 有动作 ri (X)和 wi (X),它们之前必须有一 个动作 ci (X),且二者之间没有 ui (X),但后面会有一个 ui (X); 如果调度中有 ci (X)和 cj (X),那么这两个动作之间的某个 地方必须有一个动作 ui (X)。”
2022年北华大学计算机科学与技术专业《数据库原理》科目期末试卷A(有答案)
2022年北华大学计算机科学与技术专业《数据库原理》科目期末试卷A(有答案)一、填空题1、如果多个事务依次执行,则称事务是执行______;如果利用分时的方法,同时处理多个事务,则称事务是执行______。
2、使某个事务永远处于等待状态,得不到执行的现象称为______。
有两个或两个以上的事务处于等待状态,每个事务都在等待其中另一个事务解除封锁,它才能继续下去,结果任何一个事务都无法执行,这种现象称为______。
3、数据仓库创建后,首先从______中抽取所需要的数据到数据准备区,在数据准备区中经过净化处理______,再加载到数据仓库中,最后根据用户的需求将数据发布到______。
4、采用关系模型的逻辑结构设计的任务是将E-R图转换成一组______,并进行______处理。
5、DBMS的完整性控制机制应具备三个功能:定义功能,即______;检查功能,即______;最后若发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
6、有两种基本类型的锁,它们是______和______。
7、数据管理技术经历了______________、______________和______________3个阶段。
8、设某数据库中有商品表(商品号,商品名,商品类别,价格)。
现要创建一个视图,该视图包含全部商品类别及每类商品的平均价格。
请补全如下语句: CREATE VIEW V1(商品类别,平均价格)AS SELECT商品类别,_____FROM商品表GROUP BY商品类别;9、在SELECT命令中,______子句用于选择满足给定条件的元组,使用______子句可按指定列的值分组,同时使用______子句可提取满足条件的组。
10、在设计局部E-R图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计,所以各个局部E-R图之间难免有不一致的地方,称为冲突。
这些冲突主要有______、______和______3类。
事务调度与并发控制数据库的实施运行和维护_真题-无答案
事务调度与并发控制、数据库的实施运行和维护(总分29,考试时间90分钟)一、单项选择题1. 下述不属于数据库维护工作的是______。
A. 使用数据定义语言建立多个表、构建数据库总体框架B. 根据备份计划周期性的备份数据库C. 检测数据库的空间使用情况D. 调整数据库参数,进行性能优化2. 下列关于排他锁和共享锁的说法中错误的是______。
A. 只能有一个事务对加锁项加排他锁B. 排他锁也叫独占锁或X锁,共享锁也叫读锁或者S锁C. 当加了S锁以后,其他的事务还可以对加锁项加X锁D. 当加了S锁以后,其他的事务还可以对加锁项加S锁3. 以下选项中是参数调整中需要关注的对象的是______。
A. 内存分配B. 资源竞争C. 磁盘I/OD. 以上全部4. 关于查询优化问题,下列说法错误的是______。
A. 将频繁地向数据库发送的某条查询语句用存储过程来代替,可以提高查询效率B. 为经常出现在查询条件中的属性建立索引,可以提高查询效率C. 先执行表连接条件,后执行查询条件,有利于提高查询效率D. 将频繁访问的视图物化并进行维护,有利于提高查询效率5. 事务T0、T1和T2并发访问数据项A、B和C,下列属于冲突操作的是______。
A.T0中的readA. 和T0中的write(A)B.T0中的readB. 和T2中的readC.C.T0中的write(A)和T2中的write(C)&nbs6. 数据库实施主要包括______。
①用DDL定义数据库结构②数据装载③编写与调试应用程序④数据库试运行A. ①②③B. ①②④C. ②③④D. ①②③④7. 以下关于顺序加锁法及其缺点叙述错误的是______。
A. 该方法对数据库中事务访问的所有数据项规定一个加锁顺序B. 每个事务在执行过程中必须按顺序对所需数据项加锁C. 维护对这些数据项的加锁顺序很困难,代价非常大D. 事务按照固定的顺序对这些数据项进行加锁比较方便8. 数据库的维护工作主要包括______。
数据库并发控制的主要方法
数据库并发控制的主要方法
数据库并发控制的主要方法包括以下几种:
1. 锁:数据库可以使用锁来避免多个事务同时访问同一数据。
当一个事务正在修改某个数据时,其他事务必须等待锁释放后才能访问该数据。
这种方式的优点是简单易用,但缺点是会延迟事务的执行。
2. 乐观锁:乐观锁是一种并发控制机制,它通过记录版本号来实现对数据的锁定。
当一个事务修改数据时,它将版本号设置为当前值,其他事务需要先查询数据的版本号,如果发现版本号不一致,则该事务将被阻塞,直到乐观锁被释放。
这种方式的优点是命中概率高,但需要额外维护版本号。
3. 序列化:序列化是一种高级的并发控制机制,它通过将所有事务的执行顺序执行同一个操作来实现高并发的控制。
当一个事务开始执行时,它需要等待其他所有事务都完成并释放锁,然后才能执行自己的操作。
这种方式的优点是可以保证数据的一致性,但需要更高的网络延迟和更高的开销。
4. 并发调度:数据库可以通过调整并发调度的策略来实现并发控制。
例如,数据库可以在多个事务同时执行时,优先处理较新的事务,以避免多个事务同时执行导致的数据不一致。
这种方式的优点是可以提高并发性能,但需要更高的编程技巧和经验。
在实际应用中,不同的方法需要根据具体情况进行选择。
例如,当并发量较低时,可以使用锁来控制并发,但当并发量较高时,序列化和并发调度可能更加有效。
此外,需要尽量避免使用单一的并发控制机制,以避免产生死锁等问题。
并发控制的方法
并发控制的方法
并发控制是指在多个用户或进程同时访问共享资源时,保证数据一致性和完整性的一种技术。
下面介绍几种常见的并发控制方法。
1. 乐观并发控制
乐观并发控制是指在多个用户或进程同时访问共享资源时,先不加锁,而是在提交操作时检查是否有冲突。
如果有冲突,则回滚事务,重新尝试。
这种方法适用于并发冲突较少的场景,能够提高并发性能。
2. 悲观并发控制
悲观并发控制是指在多个用户或进程同时访问共享资源时,先加锁,保证每个用户或进程的操作互不干扰。
这种方法适用于并发冲突较多的场景,能够保证数据的一致性和完整性。
3. 两阶段锁
两阶段锁是指在执行事务时,先获取所有需要的锁,然后执行操作,最后释放所有锁。
这种方法能够保证数据的一致性和完整性,但是会降低并发性能。
4. 时间戳并发控制
时间戳并发控制是指在每个事务开始时,给事务赋予一个时间戳,每个数据项也有一个时间戳。
在执行操作时,比较事务时间戳和数据项时间戳,如果事务时间戳早于数据项时间戳,则执行操作,否则回滚事务。
这种方法能够保证数据的一致性和完整性,但是会增加系统开销。
5. 多版本并发控制
多版本并发控制是指在每个数据项中存储多个版本,每个版本有一个时间戳。
在执行操作时,选择最新的版本进行操作。
这种方法能够提高并发性能,但是会增加系统开销。
以上是几种常见的并发控制方法,不同的方法适用于不同的场景,需要根据具体情况选择合适的方法。
数据库填空
1 .数据库数据具有_永久储存_、_有组织_和_可共享_三个基本特点。
2. 数据库管理系统是数据库系统的一个重要组成部分,它的功能包括_数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。
3. 数据库系统是指在计算机系统中引入数据库后的系统,一般由_数据库_、_数据库管理系统_、_应用系统_和_数据库管理员_构成。
4. 数据库管理技术的发展是与计算机技术及其应用的发展联系在一起的,它经历了三个阶段:_人工管理_阶段,_文件系统_阶段和_数据库系统_阶段。
5. 数据库具有数据结构化、最小的_冗余度_、较高的_数据独立性_等特点。
6. DBMS 还必须提供_数据的安全性_保护、_数据的完整性_检查、_并发控制_、_数据库恢复_等数据控制功能。
7. 模式(Schema)是数据库中全体数据的_逻辑结构_和_特征_的描述,它仅仅涉及到_型_ 的描述,不涉及到具体的值。
8. 三级模式之间的两层映象保证了数据库系统中的数据能够具有较高的_逻辑独立性_和_ 物理独立性_。
9. 根据模型应用的不同目的,可以将这些模型划分为两类,它们分别属于两个不同的层次。
第一类是_概念模型_,第二类是_逻辑模型和物理模型(数据模型)_。
10. 数据模型的三要素是指_数据结构_,_数据操作_,_数据完整性_。
实际数据库系统中所支持的主要数据模型是_层次模型_,_关系模型_,_网状模型_。
11. 数据模型中的_数据结构_是对数据系统的静态特征描述,包括数据结构和数据间联系的描述,_数据操作_是对数据库系统的动态特征描述,是一组定义在数据上的操作,包括操作的涵义、操作符、运算规则及其语言等。
14. 关系的完整性约束条件包括三大类:_实体完整性_、_参照完整性_和_用户定义完整性_。
15. 关系数据模型中,二维表的列称为_属性_,二维表的行称为_记录(元组)_。
16. 用户选作元组标识的一个候选码为_主码_,其属性不能取_空值_。
2022年华中科技大学计算机应用技术专业《数据库概论》科目期末试卷B(有答案)
2022年华中科技大学计算机应用技术专业《数据库概论》科目期末试卷B(有答案)一、填空题1、数据的安全性是指____________。
2、某事务从账户A转出资金并向账户B转入资金,此操作要么全做,要么全不做,为了保证该操作的完整,需要利用到事务性质中的_____性。
3、“为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的______阶段。
4、安全性控制的一般方法有____________、____________、____________、和____________视图的保护五级安全措施。
5、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SEL ECT语句中使用______保留字。
6、如果多个事务依次执行,则称事务是执行______;如果利用分时的方法,同时处理多个事务,则称事务是执行______。
7、在设计局部E-R图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计,所以各个局部E-R图之间难免有不一致的地方,称为冲突。
这些冲突主要有______、______和______3类。
8、数据库系统是利用存储在外存上其他地方的______来重建被破坏的数据库。
方法主要有两种:______和______。
9、数据库恢复是将数据库从______状态恢复到______的功能。
10、关系系统的查询优化既是关系数据库管理系统实现的关键技术,又是关系系统的优点。
因为,用户只要提出______,不必指出 ______。
二、判断题11、等值连接与自然连接是同一个概念。
()12、在数据表中,空值表示不确定。
()13、在数据库恢复中,对已完成的事务进行撤销处理。
()14、并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。
()15、可以用UNION将两个查询结果合并为一个查询结果。
()16、在第一个事务以S锁方式读数据R时,第二个事务可以进行对数据R加S锁并写数据的操作。
-数据库原理及应用第二版-第1-4章习题答案-课后习题
-数据库原理及应用第二版-第1-4章习题答案-课后习题数据库原理及应用第二版第1-4章习题答案课后习题---1. 第一章习题答案1.1 什么是数据库管理系统(DBMS)?提供三个具体例子。
DBMS是一种软件系统,用于管理和组织大量数据的存储和访问。
具体例子包括MySQL,Oracle和Microsoft SQL Server。
1.2 数据库系统由哪些基本组成部分构成?简要描述每个组成部分的功能。
数据库系统由以下组成部分构成:- 数据库:用于存储和组织数据的集合。
- 数据库管理系统(DBMS):负责管理和操作数据库的软件系统。
- 应用程序:使用数据库中的数据进行特定任务的软件程序。
- 用户:通过应用程序和DBMS与数据库进行交互的人。
1.3 什么是数据库模式(schema)?它包括哪些内容?数据库模式是数据库的逻辑结构和特征的描述。
它包括实体(Entity)、属性(Attribute)、关系(Relationship)以及约束条件等内容。
1.4 什么是数据库实例(instance)?它包括哪些内容?数据库实例是指在内存中运行的数据库系统。
它包括当前数据库中的数据以及与之相关的缓冲区、连接信息和其他控制结构等内容。
1.5 简述数据库管理系统的主要功能。
- 数据定义功能:定义和描述数据库模式。
- 数据操作功能:实现对数据库的增、删、改、查等操作。
- 数据控制功能:管理用户访问权限,并确保数据的完整性和安全性。
- 数据库恢复功能:通过备份和恢复机制保护数据的持久性。
- 并发控制功能:维护多个用户同时访问数据库的一致性和隔离性。
2. 第二章习题答案2.1 数据库系统中的数据模型是什么?它的目的是什么?数据模型是数据库中数据的逻辑表示方式。
它的目的是描述数据之间的关系以及数据的特性和约束条件。
2.2 列举并简要描述常见的数据模型。
- 层次模型:将数据组织成树状结构,通过父节点和子节点之间的关系表示数据之间的层次关系。
第16章并发控制
Database System Concepts 3rd Edition
16.8
©Silberschatz, Korth and Sudarshan
两阶段锁协议 (续)
存在用两阶段锁不能得到的冲突可串行化调度. 然而, 在缺少额外信息(如数据存取次序)的情况下, 两阶段锁对冲突 可串行化要求来说是必要的, 意即: 给定不遵守两阶段锁的事务Ti, 可以找到使用两阶段锁的事务Tj 及Ti 与Tj 的一个不是冲突可串行化的调度.
锁管理器可能保存每个事务持有 的锁的列表, 以便对此高效地实 现
Database System Concepts 3rd Edition
16.14
©Silberschatz, Korth and Sudarshan
基于图的协议
基于图的协议是相对于两阶段锁协议的另一选择 在所有数据项集合D = {d1, d2 ,..., dh} 上施加一个偏序→.
W-timestamp(Q) 是成功执行了write(Q)的所有事务中的最大时间戳. R-timestamp(Q)是成功执行了read(Q)的所有事务中的最大时间戳.
Database System Concepts 3rd Edition
16.18
©Silberschatz, Korth and Sudarshan
Database System Concepts 3rd Edition
16.4
©Silberschatz, Korth and Sudarshan
基于锁的协议的陷阱
考虑下面的部分调度
T3 和T4 都不能继续 — 执行lock-S(B) 使T4 等待T3 释放它持有的 B上的锁, 而执行 lock-X(A) 使T3 等待T4 释放它持有的A上的锁. 这种情形称为死锁 死锁. 死锁 为处理死锁, T3 或T4 必须回滚并释放它持有的锁.
数据库并发控制的方法与原理
数据库并发控制的方法与原理数据库并发控制是数据库管理系统中一个重要的概念,它解决了当多个用户同时访问数据库时可能出现的数据冲突和一致性问题。
在并发环境下,如果多个用户对同一数据进行读写或写操作,就很容易导致数据的不一致性,因此需要使用并发控制方法来保证数据库操作的正确性和一致性。
一、并发控制的原理并发控制的目标是保证数据库的一致性、事务的隔离性和并发操作的正确性。
它主要通过锁和并发控制算法来实现。
并发控制的原理可以概括为以下几个方面:1. 锁机制:锁是最常用的并发控制方法之一。
它可以把数据对象加锁,使得其他用户无法同时访问该对象。
在事务进行读写操作前,必须先获得该数据对象的锁,并在事务结束后释放锁。
通过锁的协调和管理,可以保证并发操作的正确性和一致性。
2. 事务隔离级别:数据库系统通过设置事务的隔离级别来控制并发操作。
常见的隔离级别有四个:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
不同的隔离级别对并发控制的方法和效果有一定的影响。
3. 事务调度算法:数据库系统中的并发控制器会对并发的事务进行调度和管理,以保证事务的正确执行和顺序。
事务调度算法包括优先级调度、等待图调度和时间戳调度等。
它们可以根据事务的需求和依赖关系来决定事务的执行顺序,并避免死锁等并发问题。
二、并发控制的方法在数据库管理系统中,有多种方法可以实现并发控制,下面介绍其中的一些常用方法:1. 两段锁定(Two-Phase Locking):这是最基本的锁方法之一。
该方法要求事务通过两个阶段进行操作:增长(Growing)阶段和收缩(Shrinking)阶段。
在增长阶段,事务只获取锁并可以对数据进行读取操作;在收缩阶段,事务只释放锁,不再获取新的锁。
通过严格控制锁的操作顺序和释放时机,可以避免死锁等并发问题。
2. 死锁检测与解决:死锁是一种并发控制中常见的问题,当多个事务相互等待锁时可能会发生。
数据库事务管理中的并发冲突与解决方案分析
数据库事务管理中的并发冲突与解决方案分析数据库事务管理中的并发冲突是一个常见的问题,它可能导致数据一致性和完整性的问题。
本文将分析数据库事务管理中的并发冲突以及一些解决方案。
一、并发冲突的定义和原因并发冲突指的是在数据库中同时执行的多个事务相互干扰,导致数据不一致或完整性受损的情况。
并发冲突主要由以下原因引起:1. 丢失更新:两个事务读取相同的数据,在没有锁定的情况下,同时对该数据进行更新操作,导致其中一个事务的更新结果被覆盖。
2. 脏读:一个事务读取另一个事务尚未提交的数据。
如果后续事务回滚,读取到的数据就是脏数据。
3. 不可重复读:一个事务多次读取同一数据,在读取过程中,其他事务对该数据进行了修改,导致前后两次读取的数据不一致。
4. 幻读:一个事务根据某个条件查询数据集,然后另一个事务插入了符合该条件的新数据,导致前一个事务再次查询时出现新增数据。
以上冲突都是由于多个事务在同时操作数据库,而没有进行合理的协调与管理。
二、解决并发冲突的常见方案为了保证数据库中的数据一致性和完整性,需要采取一些解决并发冲突的方案。
下面介绍几种常见的方案:1. 锁机制:锁机制是最常见的解决并发冲突的方式之一,主要通过对数据库中的数据进行锁定,来限制事务的访问。
常见的锁包括共享锁和排他锁,共享锁允许多个事务同时访问数据但不允许修改,而排他锁只允许一个事务独占访问并且可以修改数据。
2. 事务隔离级别:数据库提供了不同的事务隔离级别,可以通过设置合适的隔离级别来控制并发冲突。
常见的事务隔离级别包括读未提交、读已提交、可重复读和串行化,不同的隔离级别对并发冲突的处理方式和可见度有所不同。
3. 乐观并发控制:乐观并发控制是一种基于冲突检测的策略,它假设事务之间很少发生冲突,因此允许多个事务并发执行,并在事务提交时检测冲突。
常用的乐观并发控制技术包括版本控制和时间戳。
4. 冲突检测与解决:在并发冲突发生时,可以通过冲突检测和解决来处理。
数据库系统概论CH11部分习题解答
第十一章并发控制事务处理技术主要包括数据库恢复技术和并发控制技术。
本章讨论数据库并发控制的根本概念和实现技术。
本章内容有一定的深度和难度。
读者学习本章一定要做到概念清楚。
一、根本知识点数据库是一个共享资源,当多个用户并发存取数据库时就会产生多个事务同时存取同一个数据的情况。
假设对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以DBMS必须提供并发控制机制。
并发控制机制的正确性和高效性是衡量一个DBMS性能的重要标志之一。
①需要了解的: 数据库并发控制技术的必要性,活锁死锁的概念。
②需要结实掌握的: 并发操作可能产生数据不一致性的情况(丧失修改、不可重复读、读“脏数据〞)及其确切含义;封锁的类型;不同封锁类型的(例如X 锁,S锁)的性质和定义,相关的相容控制矩阵;封锁协议的概念;封锁粒度的概念;多粒度封锁方法;多粒度封锁协议的相容控制矩阵。
③需要举一反三的:封锁协议与数据一致性的关系;并发调度的可串行性概念;两段锁协议与可串行性的关系;两段锁协议与死锁的关系。
④难点:两段锁协议与串行性的关系;与死锁的关系;具有意向锁的多粒度封锁方法的封锁过程。
二、习题解答和解析1. 在数据库中为什么要并发控制? 并发控制技术能保证事务的哪些特性?答数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
假设对并发操作不加控制就可能会存取和存储不正确的数据,破坏事务的一致性和数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
并发控制技术能保证事务的隔离性和一致性。
2. 并发操作可能会产生哪几类数据不一致? 用什么方法能防止各种不一致的情况?答并发操作带来的数据不一致性包括三类:丧失修改、不可重复读和读“脏〞数据。
(1) 丧失修改(Lost Update)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丧失。
C事务的方法详细
1第十八讲事务管理2学完本讲后,你应该能够了解:1. 事务是数据库操作的原子单位,具有原子性、一致性、隔离性和持久性等特性;2. 事务的并发导致的四种不一致性:丢失修改(LostUpdate)、不可重复读(N on-RepeatableRead)、读“脏”数据(DirtyRead)和幻像(Phanto m).并发控制的正确性准则是事务并发执行的可串行化3. 两段锁协议的工作原理;4. ANSI SQL-92支持的四种隔离级别5. 数据库恢复的目标是在故障发生时,确保事务的原子性和持久性;6. DBMS提供备份机制、日志机制、检查点机制来协助数据库故障恢复;7. 事务编程时,应尽量避免事务中的用户交互.本讲主要目标3一.事务的定义与特性二.事务并发导致的四种不一致性三.两段锁协议四.隔离级别五.数据库恢复的目标六. 数据库恢复的技术七. 事务编程4事务的定义与特性5事务的定义与特性1. 多用户同时操作同一张表导致的问题假定两个顾客使用主副信用卡分别几乎同时刻在两台A TM上取款;有可能两人各取出500元,而帐户上只减少500元。
导致此种情形出现的原因是什么?SQL的原子操作单位与操作系统的原子操作单位不同?6事务的定义与特性2. 数据的不一致性假定数据库系统自动检测参照完整性约束,有下面操作:操作一:删除学号为“95002”的学生的信息;操作二:插入选课信息(“95005”,“C8”,85);操作三:修改学号“95001”的学生的学号为“95008”;这些操作如何实现?这些操作一定能用SQL实现吗?7事务的定义与特性学号S#姓名SN性别SE年龄SA所在系SD95001李勇男20 CS95002刘晨女19 IS95003王敏女18 MA95004张立男19 IS课程号C#课程名CN先行课CP#学分CCC1 数据库C5 4C2 数学2C3 信息系统C1 4C4 操作系统C6 3C5 数据结构C7 4C6 数据处理2C7 PASCAL语言C6 4学号S#课程号C#成绩G95001C1 9295001C2 8595001C3 8895002C2 9095002C3 80SCSC8事务的定义与特性解决方法一:DELETEFROM SWHERES# = ‘95002’;DELETEFROM SCWHERES# = ‘95002’;两个SQL删除命令的顺序不合适会破坏参照完整性WHERE2. 数据的不一致性操作一:删除学号为“95002”的学生的信息;解决方法二:DELETEFROM SCWHERES# =‘95002’;DELETEFROM SS# =‘95002’;破坏参照完整性9事务的定义与特性2. 数据的不一致性操作二:插入选课信息(“95005”,“C8”,85);INSERT INTO SV ALUES(’95005’,null,null,null,null);INSERT INTO CV ALUES(’C8’,null,null);INSERT INTO SCV ALUES(’95005’,’C8’,85);三个SQL插入命令的顺序不合适会破坏参照完整性10事务的定义与特性2. 数据的不一致性操作三:修改学号“95001”的学生的学号为“95008”;UPDATE SSET S# = ‘95008’WHERES# = ‘95001’;UPDATE SCSET S# = ‘95008’WHERES# = ‘95001’;UPDATE SCSET S# = ‘95008’WHERES# = ‘95001’;UPDATE SSET S# = ‘95008’WHERES# = ‘95001’;破坏参照完整性破坏参照完整性11事务的定义与特性2. 数据的不一致性为何出现该问题?¾参照完整性的检测时机是在关系数据库的原子操作之前或之后¾一个SQL语句是关系数据库的原子操作;如何解决该问题?修改原子操作的定义——可以将多个S Q L语句定义为一个原子操作事务12事务的定义与特性3. 事务的定义事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
数据库事务处理中的死锁与并发控制策略
数据库事务处理中的死锁与并发控制策略在数据库管理系统中,死锁和并发控制是关键的概念,涉及到确保多个并发事务能够同时运行而不发生冲突的问题。
本文将讨论数据库事务处理中的死锁和并发控制策略,以解决这些问题。
一、死锁的概念和原因1. 死锁的定义死锁是指两个或多个事务互相等待对方持有的资源,并导致彼此无法继续执行的情况。
如果不采取措施来解决死锁,系统将进入无限等待的状态。
2. 死锁的产生原因死锁通常由以下四个条件同时满足而产生:- 互斥条件:资源只能被一个事务占用,其他事务需要等待。
- 持有并等待条件:事务在持有一些资源的同时,还等待获取其他资源。
- 不可剥夺条件:已被一事务占用的资源不能被其他事务剥夺。
- 循环等待条件:一系列事务形成一种循环等待资源关系。
二、死锁的检测与解决策略1. 死锁的检测死锁的检测是指通过算法检测系统中是否有死锁的发生,一旦检测到死锁,系统可以采取相应的策略来解决。
常见的死锁检测算法有图论算法和资源分配图算法。
2. 死锁的解决策略- 死锁预防:通过破坏死锁产生的四个必要条件之一来预防死锁的发生。
例如,破坏持有并等待条件,要求事务在执行前一次性申请所需的全部资源。
- 死锁避免:通过事务请求资源时的动态分配,根据资源的状况决定是否分配给请求资源的事务。
常用的避免算法有银行家算法和资源分配图算法。
- 死锁检测与解除:先进行死锁检测,一旦检测到死锁的存在,通过撤销事务、资源抢占或回滚等方式解除死锁。
三、并发控制策略1. 一致性与隔离级别一致性和隔离级别是数据库中的重要概念,用于定义并发事务的行为和执行结果的可见性。
- 一致性:确保并发事务的执行结果与顺序执行结果相同。
基本原则是事务应该遵守数据库的完整性约束和业务逻辑。
- 隔离级别:定义了一种隔离的程度,用于控制并发事务间相互干扰的程度。
隔离级别从低到高分为读未提交、读提交、可重复读和串行化。
2. 并发控制技术为了确保并发执行的多个事务能够正确地访问和修改数据库,数据库管理系统中使用了多种并发控制技术。
dbms两段锁协议
dbms两段锁协议数据库管理系统(DBMS)中的两段锁协议是一种并发控制机制,用于确保事务的并发执行不会导致数据不一致或冲突问题。
该协议包括两个阶段,加锁阶段和解锁阶段。
在加锁阶段,事务需要按照规定的顺序获取所需的锁,以保证数据的一致性。
具体而言,两段锁协议要求事务在读取或修改数据之前先获取共享锁(S锁)或排他锁(X锁)。
S锁用于读取操作,多个事务可以同时持有共享锁;而X锁用于写入操作,只能有一个事务持有排他锁。
当事务申请锁时,如果该锁已被其他事务持有,那么申请的事务会被阻塞,直到锁可用。
在解锁阶段,事务释放已经持有的锁,以便其他事务可以获取并操作相应的数据。
释放锁的时机很关键,如果事务在未完成操作之前释放锁,可能导致数据不一致的问题。
两段锁协议的目标是保证事务的串行化执行顺序,避免数据的不一致性和冲突问题。
通过在事务执行期间严格控制锁的获取和释放顺序,可以避免死锁和数据丢失等并发控制问题。
然而,两段锁协议也存在一些限制和问题。
例如,如果事务在加锁阶段获取了所有需要的锁,但在解锁阶段发生了错误导致事务无法完成,那么其他事务将无法获取到被该事务持有的锁,从而导致死锁。
此外,两段锁协议也可能导致事务的等待时间增加,从而影响系统的性能。
总的来说,两段锁协议是一种常用的并发控制机制,用于保证事务的一致性和并发性。
它通过加锁和解锁的方式来控制事务对数据的访问,从而避免数据不一致和冲突问题。
然而,在实际应用中,需要根据具体情况综合考虑并发控制策略,以达到最优的性能和数据一致性。
数据库的并发操作
数据库的并发操作数据库并发控制的基本目标是保证事务的隔离性和一致性。
事务是一组数据库操作的逻辑单位,要么全部执行成功,要么全部不执行。
数据库并发控制需要确保同时执行的事务以合适的顺序访问和修改数据,以避免不一致的结果。
为了实现并发控制,数据库系统采用了一系列的并发控制技术,下面将介绍几种常见的技术。
1.锁定机制:数据库使用锁定机制来保证事务的隔离性和一致性。
锁定可以分为共享锁和排他锁。
共享锁允许多个事务同时读取同一数据,而排他锁只允许一个事务对数据进行写操作。
通过加锁和释放锁,可以确保并发操作下的数据一致性。
2.串行化:串行化是一种最基本的并发控制策略,它通过让每个事务按照顺序执行来避免冲突和死锁。
串行化虽然能保证事务的一致性,但并发性能较差,在高并发环境下效率低下。
3.乐观并发控制:乐观并发控制是一种基于版本或时间戳的机制,它假设事务之间的冲突很少发生。
当一个事务要写入数据时,它会首先检查该数据是否被其他事务修改过。
如果没有被修改,该事务可以写入数据。
如果被修改过,则需要进行冲突解决。
4.两阶段锁定:两阶段锁定是一种广泛应用的并发控制技术。
它将事务分为两个阶段:加锁阶段和解锁阶段。
在加锁阶段,事务会按照特定的顺序依次获取所需的锁,如果无法获取锁,则会等待。
在解锁阶段,事务会依次释放已经持有的锁。
通过两阶段锁定,可以有效避免死锁和数据冲突。
5.多版本并发控制:多版本并发控制是乐观并发控制的一种扩展。
它通过为每个事务维护多个版本的数据来实现并发操作。
当一个事务读取数据时,不会阻塞其他事务写入该数据,而是读取最新版本的数据。
这样可以提高并发性能,但也增加了存储和维护成本。
除了上述技术之外,数据库还可以通过调整事务隔离级别、使用快照隔离、并发控制算法等方式来实现并发操作的控制。
总的来说,数据库的并发操作是一项复杂的技术,需要针对具体的应用环境选择适当的并发控制策略。
通过合理的并发控制,可以实现高效、可靠和安全的数据库操作。
数据库简答题
1、解释数据库,数据库系统,数据库管理系统三个概念。
数据库是指长期存储于计算机内的、有组织的、可共享的数据集合。
(1分)DBMS是指位于用户与OS之间的一层数据管理软件,它位用户或应用程序提供访问DB的方法。
(1分)DBS是实现有组织的、动态的存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即采用数据库技术的计算机系统。
(2分)2、试述视图和基本表之间的联系和区别?(1)视图和基本表在概念上等同,他们都是关系。
(1分)(2)基本表是本身独立存在的表。
视图是从一个或几个基本表(或视图)中导出的表,它与基本表不同,是一个虚表。
数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍然放在原来的基本表中。
(3分)3、数据库的完整性概念与数据库的安全性概念有什么区别和联系?数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。
(2分)后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
(2分)4、什么是封锁?基本的封锁类型有几种,简要说明它们的含义。
封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。
(2分)基本封锁类型:排它锁和共享锁。
排它锁又称为写锁:若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁(1分)共享锁又称为读锁:若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
(1分)1、(3分)简述二段锁协议和可串行化调度的含义。
两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编号: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目前解决事务间冲突和数据冲突的并发控制算法有很多,本文主要从锁(Locking )的和非锁(N on -Locking )的并发控制机制这两个方面比较两种并发控制方法:两段锁协议(T w o -Phase Locking 简称2P L ),可串行化图检测方法(Serialization G raph T esting ).2 锁机制(Locking Mechanism)首先介绍两段锁协议的定义:一个日志L =<D ,T ,Σ,S ,Π>是2P L 的当且仅当n 个事务T 1,T 2,…,T n 存在序列α1,β1,…,αn ,βn 满足以下条件:S1:αn <βn for i =1,…,n.S2:αi <Π(W i ),and Π(R i )<βi for i =1,…,n.S3:如果CT (p i ,q j )and Π(p i )<Π(q j ),那么存在序列U i 和L j 满足a )Π(p i )<U i <L j <Π(q j );b )βi ≤U i and L j ≤αj .这里D 表示数据项集,T 表示事务集,Σ是原子操作集,S 是存取函数,它给出被原子操作访问的数据项集,Π是排列函数,它分配操作顺序.一个事务在读数据项前必须加读锁,在写数据前加写锁.同时两个事务如果其中一个是写锁时不能同时对相同的数据加锁.事务在释放一个锁后不再获得锁了.如图1所示2P L 的几何描述,其中上升边表示事务T i 的上锁,下降边表示事务T i 的放锁,我们可以看出事务T i 对数据项的上锁都在放锁之前,αi 图1 两段锁序列的几何描述为事务T i 最大的上锁点,βi 为事务T i 最小的放锁点.实现2P L 需要使用两个的数据结构是锁表和等待列表.锁表是为了找出事务目前所有持有的锁,锁表的结构包括锁的类型(数据库,关系,页,关键区)、锁的模式(共享,排他)、关系标识、事务标识和等待标记等.等待标记是用来指示其他事务等待获得该关系上的锁,如果标记是集合,那么在等待列表中有等待那个事务的入口.锁表是固定大小的数组,事务可能因为数组大小有限而阻塞,锁表在等待队列中也有入口.等待列表是一个链表它连接阻塞锁申请,每一入口标识事务或关系锁申请和进入阻塞事务锁表的索引.当事务阻塞时作为新的结点加入到列表的开始处.当事务释放锁时,顺序扫描等待列表看是否有事务等待这种关系或类型的锁.以上2P L 数据结构导致其缺点:持有锁的事务在阻塞队列中产生一个阻塞链,它们也阻塞系统中的其他事务,显然这种现象会降低系统性能和使事务的阻塞时延失去控制也就是死锁.但2P L 是达到事务一致性协议T CP [1](T ransactional C onsistency Protocol )中的1SR 的一致性的,因为它要求事务只有在提交或终止后才能释放它所持有的所有的锁.任何2P L 的事务是可串行化的,但不能避免死锁.所以2P L 可以根据其等待列表构造等待图(WFG )来检测死锁.在2P L 基础上有D2P L 和S2P L ,它们都是基于2P L 协议通过静态和动态方法处理阻塞事务,两者性能比较在文献[2]中做了详细描述.针对2P L 采用锁机制的缺点,我们可以采用非2P L 的方法来克服,它的优点就是避免了死锁,不需限制数据结构,不需重读数据,这些就是下面将介绍非2P L 方法的非锁机制所具备的.3 非锁机制(N on -Locking Mechanism)非锁并发控制方法有很多,这里我们讨论一种比较典型的非锁机制是SG T (Serialization G raph T est 2ing )叫可串行化图或冲突图,冲突图中结点表示事务集中处于活跃状态的冲突事务,边用有向箭头表示即t i →t j ,i ≠j 当且仅当ϖp i ∈t i ,q j ∈t j ((p i CT q j )∧(p i <H q j )),其中p i <H q j 表示冲突事务i 中p 操作在冲突事务j 中q 操作前面.并发控制维护事务集所形成的可串行化图,并且使用SG T 方法保证该图是无环的,这样就可使事务经历H 是可串行化的,因为环图表明数据库操作(事务间和事务内部)间有数据依赖。
其中SG T 规则如下:(1)对于读操作R i (x ): if T i exits in SG then02湖北大学学报(自然科学版)第27卷 Add T i in SG; for T j ∈SG T T j ≠T i {if x ∈W SCH[T j ]then add edge T j →T i ; end if if CY C LE T (SG )=1 /3SG is Cyclic 3/ then Abort T i ; else Send R i (x )to DO ; R SCH[T i ]=R SCH[T i ]∪{X}; end if ; }(2)对于写操作W i (x ): if T i exits in SG then Add T i in SG; for T j ∈SG T ,T j ≠T i {if x ∈W SCH[T j ]∨x ∈R SCH[T j ] then Abort T i ; else Send W i (x )to DO W SCH[T i ]=W SCH[T i ]∪{x} end if }该方法在检测冲突图时需要借助预先定义活跃事务的读集R SCH[T i ]和写集W SCH[T i ]来判断冲突操作,另外当冲突图中事务T i 终止时要从图中移去该结点以及与之相连的边.该SG T 与等待图有着本质区别,除了本身结点和边意义不同外,等待图用于检测死锁,它包含的是阻塞的事务,而SG T 中是活跃的事务,SG 保证是可串行化的,不干扰执行的事务.4 两种并发控制方法的比较从锁和非锁两种机制来说,封锁算法(2P L 协议)是一种保守的策略,不论有无冲突,在存取对象前都要加锁,而且所有的锁只有在事务结束时才能释放,由于对象拥有锁的时间长,使事务可能发生阻塞和死锁,另外还要为数据对象保存大量锁控制信息,增加了系统开销,使得其响应时间比非锁机制慢.非锁控制方法比锁方法增加了事务处理的并发度,而且比较可靠,没有死锁的危险.两段封锁(2P L )技术可简单认为是一种保证事务执行的串行性次序的方法,它用上锁和开锁来执行,并用事务得到锁的先后次序作为事务操作执行的次序.SG T 的并发控制通过检测可串行化图无环允许任何交叉的读写操作是可串行的,因此比2P L 约束更加宽厚些.而2P L 约束相对要苛刻些,它不允许某些交叉的读写操作.由以上算法可以看出2P L 不需为了达到事务的可串行化而强制事务卷回,而SG T 是要通过强制终止或夭折实现事务的可串行化.2P L 虽然概念简单,但有死锁和降低并发度的缺点,需要构造等待图来检测死锁或预先申请所需的所有资源,但这样必定造成事务串行执行,降低了事务的并发度.SG T 能克服以上问题,保证并发控制技术一致性,可串行化和非2P L ,从而减少额外开销.例如一个由T 1:R (x )W (y )和T 2:W (x )R (y )事务并发执行时的调度:T 1 T 2 RL (x )W L (y )r 1(x )w 2(y )::12第1期金 蓉等:事务并发控制中的两段锁和可串行化冲突图的对比在此情况下由于T 1等待T 2释放数据对象y 的写锁而T 2也在等待T 1释放数据对象x 的读锁双方陷入等待状态从而造成死锁,2P L 应用的锁表格式(其中R L 表示读锁,W L 表示写锁)如下:Data Locks granted Locks requested (Waited )x〈T 1,RL 〉〈T 2,W L 〉y〈T 2,W L 〉〈T 1,RL 〉………图2 等待图为了防止死锁情况的发生,可以在不影响其并发度情况下建立等待图如图2所示.由图2可知经过检验该等待图,发现T 1和T 2构成环从而会造成死锁,因此2P L 还需辅助手段来检测死锁.而如果是采用SG T 方法只需对每个事务设立相应读写集就可以了,如R-SCH[T 1]={x},W -SCH[T 1]={y},R -SCH[T 2]={y},W -SCH [T 2]={x},如果T i →T j 有边就表示事务T i 与T j 有读写,写读或写写冲突,事务T 1和T 2经读写集判断冲突后构造可串行化冲突图如图3所示,根据算法规则判断事务T 1和T 2构成了环,因此需要终止其图3 可串行化冲突图中一事务而防止执行时事务间产生死锁.由实际应用对比可知,2P L 无预处理和事后处理需要,而SG T 需要预先定义数据操作的读集和写集.2P L 使用两个数据结构是锁表和等待列表,较SG T复杂,SG T 只需读集和写集数据结构就可以了,只不过SG T 的读写集是事务的读写对象.此外2P L 在阻塞操作解除时,2P L 必须查找整个等待列表去发现阻塞事务然后企图获得锁,这不仅费时而且也不保证事务在同样的关系上又一次阻塞.同样的事务可能持续阻塞,放在等待列表中,然后从表中删除,试图再次获得锁,又被阻塞,没有理论上限制这种情况发生的次数.因此2P L 又可能造成活锁现象.SG T 中表示活跃事务的结点没有入边时,该事务就可从冲突图中删除并且移去相连边,因为如果该结点无入边就将在冲突图中不会加到形成的环中,这样就提高了事务的执行效率和并发度.所以SG T 的负载随着冲突的增大能保持稳定而2P L 则提高,SG T 的响应时间随着数据共享水平的提高而更好,SG T 的吞吐率在大多数情况下比2P L 好,SG T 在较高冲突情况下有较好的性能.2P L 在无冲突,无死锁环境下可能比SG T 少一些CPU 负载,而在高冲突系统中隐含许多死锁,SG T 性能将好些[3,4].5 结 论SG T 比2P L 具有较高的并发度,在低冲突情况下,2P L 性能要好些,而在高冲突情况下,SG T 性能要好些.SG T 方法是用可串行化图获得数据流的可串行化调度.从结构上来看,2P L 虽简单但数据结构较SG T 复杂,因此响应时间和吞吐率会比SG T 差些,但目前许多大型数据库例如Oracle8i 和分布式数据库中仍采用2P L 方法.除此以外,2P L 还有一些扩展和改进的并发控制技术,在实时数据库和分布式数据库中都有应用.参考文献:[1]Ngamsuriyaroj S ,K eefe T ,Hurs on A.Maintaining consistency of the security policy using timestam p ordering[A].Bob Werner.C od 2ing and com puting[C].Las Vegas :IEEE C om puter S ociety ,2002.164~170.[2]Hung S L ,Lam K W ,Lam K Y.E fficient technique for per formance analysis of locking protocols[A ].Vijay K Madisetti ,Erol G e 2lenbe ,Jean C Walrand.M odeling analysis and simulation of com puter and telecommunication systems[C].Durham ,NC US A :IEEE C om puter S ociety ,1994.276~283.[3]K ozak P ,W onham W M.Design of transaction management protocols[J ].IEEE T ransactions on Automatic C ontrol ,1996,41(9):1330~1335.22湖北大学学报(自然科学版)第27卷[4]Margaret Heich.G raph directed locking[J ].IEEE T ransaction on S oftware Engineering ,1988,14(2):133~140.The comparison of tw o -phase locking and serialization graphtesting in concurrency control of transactionJ I N R ong ,LI Y ue 2xin(School of Mathematics and C om puter Science ,Hubei University ,Wuhan 430062China )Abstract :The concurrent operations are classified into data level and transaction level.Due to the com petition of res oures ,the data level and transaction level conflicts can be brought.S o the execution of concurrent transactions have to be trans ferred s ome serializable schedule s o as to insure the consistency of database.At present there are many concurrency control methods in database system ,analyse tw o concurrency control methods including tw o -phase locking and serialization graph from the aspect of locking mechanism and non -locking mechanism ,introduce the rules and data structures ,and then com pare their strongpoints and drawbacks of performance from the conflict se 2rializability of transaction and the structures of concurrency control.K ey w ords :locking ;tw o -phase locking ;serialization graph testing (责任编辑 肖 铿)(上接第5页)从而M ∈J 2(G ),由已知θ(M )中存在一个正规极大θ-子群偶(C ,D )使得Δ1(G/D )≠1,由引理4,有N ≤D ,由引理1,有(C/N ,D/N )为θ(M/N )中的正规极大θ-子群偶且Δ1((G/N )/(D/N ))≠1,根据归纳法G/N 可解,设N 为G 的唯一极小正规子群.若N ≤Δ2(G ),则G 可解;若N ⁄Δ2(G ),则存在M 1∈J 2(G )且N ⁄M 1使得G =M 1N 且C ore M 1=1,(N ,1)为M 1的唯一正规极大的θ-子群偶,由已知Δ1(G )≠1,因Δ1(G )ΔG ,所以N ≤Δ1(G ),由Δ1(G )之超可解性知N 可解,从而G 可解.参考文献:[1]Mukherjee N P ,Bhattacharya P.On theta pairs for a maximal subgroup[J ].Proc Amer Math S oc ,1990,109(3):589~596.[2]杨立英.关于有限群可解的几个定理[J ].广西师范学院学报(自然科学版),2003,20(1):5~7.[3]赵耀庆.有限群极大子群的θ-子群偶[J ].数学学报,1997,40(1):67~72.[4]樊 恽.关于极大子群的三个问题[J ].数学学报,1986,29(5):628~631.Several conditions about the solvability of finite groupW ANGJun 2xia(School of Mathematics ,and C om puter Science ,Hubei University ,Wuhan 430062,China )Abstract :Studied the s olvabilty of finite group by the theta pairs of only one special maximal subgroups ,ob 2tained a series of new results about the s olvability of finite group.K ey w ords :finite group ;maximal subgroups ;θ-pairs for a maximal subgroup(责任编辑 肖 铿)32第1期金 蓉等:事务并发控制中的两段锁和可串行化冲突图的对比。