并发控制就是要用正确的方法来调度并发操作,使一个事务的执行不受其他事务的干扰,避免造成数据的不一致情况。......
2023-11-24
计算机系统对并发事务中的操作的调度是随机的,而不同的调度会产生不同的结果,那么哪个结果是正确的,哪个结果是不正确的?直观地说,如果多个事务在某个调度下的执行结果与这些事务在某个串行调度下的执行结果相同,那么这个调度就一定是正确的。因为所有事务的串行调度策略一定是正确的调度策略。虽然以不同的顺序串行执行事务可能会产生不同的结果,但都不会将数据库置于不一致的状态,因此都是正确的。
多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,称这种调度为可串行化的调度。
可串行性是并发事务正确性的准则,根据这个准则可知,一个给定的并发调度,当且仅当它是可串行化的调度时,才认为是正确的调度。
例如,假设有两个事务,分别包含如下操作:
事务T1:A=B+1
事务T2:B=A+1
假设A、B的初值均为4,如果按T1→T2的顺序执行,则结果为A=5,B=6;如果按T2→T1的顺序执行,则结果为A=6,B=5。则当并发调度时,如果执行的结果是这两者之一,就认为都是正确的结果。(www.chuimin.cn)
图7-12给出了这两个事务的几种不同的调度策略。
为了保证并发操作的正确性,数据库管理系统的并发控制机制必须提供一定的手段来保证调度是可串行化的。
从理论上讲,若在某一事务执行过程中禁止执行其他事务,则这种调度策略一定是可串行化的,但这种方法实际上是不可取的,因为这样不能让用户充分共享数据库资源,降低了事务的并发性。目前的数据库管理系统普遍采用封锁方法来实现并发操作的可串行性,从而保证调度的正确性。
两段锁(Two-Phase Locking,简称2PL)协议是保证并发调度的可串行性的封锁协议。除此之外还有一些其他的方法等来保证调度的正确性。我们这里只介绍两段锁协议。
图7—12 并发事务的不同调度
有关数据库技术与应用教程的文章
分布式数据库管理系统的并发控制是为了保证多用户分布环境下的数据库一致性。可串行化是涉及并发控制的一个重要理论。条件1表示调度涉及的域是一个由各个事务构成的集合。例9.2所示的是一个串行调度。下面我们讨论可串行化的问题。定义9.3 一个调度Sc是可串行的,当且仅当Sc冲突等价于一个串行调度,这种可串行化通常称为冲突等价可串......
2023-10-28
实体完整性也称为行完整性,是指表中的每一行都必须能够唯一标识,且不存在重复的数据行。在SQL Server 2012中,实体完整性可以通过主键约束和唯一性约束实现。图8—11违反唯一性约束使用T-SQL语句也可以实现唯一性约束。图8—12系统提示错误信息从约束效果看主键约束和唯一性约束,基本相同。......
2023-11-24
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2023-11-24
如果要使用缺省参数创建一个学籍管理数据库StuData,可以使用如下命令:Create Database StuData如果希望为数据库或事务日志指定一个或者多个特定文件,增加一个On Primary子句,列出一个或者多个文件,并可为分配这个文件的空间指定一个可选值,其命令形式如下:Create Database StuDataOn Primary,;如果为了提高性能和可恢复性,则可以使用Log On子句来指定数据库的SQL Server事务日志将存储在一个与数据库对象不同的设备上,示例如下:Create Database StuDataOn Primary,Log On;GO......
2023-11-24
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2023-11-24
虽然对视图的操作最终都转换为对基本表的操作,视图看起来似乎没什么用处,但实际上,如果合理地使用视图会带来许多好处。定义视图可以将表与表之间复杂的连接操作和搜索条件对用户隐藏起来,用户只需简单地查询一个视图即可。这在多次执行相同的数据查询操作时尤为有用。......
2023-11-24
SQL的数据查询语句中包括SELECT,FROM,WHERE,GROUP BY和ORDER BY子句。SELECT语句具有数据查询、统计、分组和排序的功能,其语句表达能力非常强大。查询操作需要的数据源指基本表组,表间用“,”分割。当SELECT子句后的目标列中有统计函数,如果查询语句中有分组子句,则统计为分组统计,否则为对整个结果集统计。交查询操作,操作结果为取<查询1>和<查询2>共有的元组。......
2023-11-24
相关推荐