并发控制就是要用正确的方法来调度并发操作,使一个事务的执行不受其他事务的干扰,避免造成数据的不一致情况。......
2023-11-24
在数据库环境中,进行并发控制的主要方式是使用封锁机制,即加锁(Locking),加锁是一种并行控制技术,是用来调整对共享目标(如数据库中共享记录)的并行存取的技术。事务通过向封锁管理程序的系统组成部分发出请求而对记录加锁。
以飞机订票系统为例,若甲事务要修改订票数时,在读出订票数前先封锁此数据,然后再对数据进行读取和修改操作。这时其他事务就不能读取和修改订票数,直到甲事务修改完成并将数据写回到数据库,并解除对此数据的封锁之后其他事务才能使用这些数据。加锁就是限制事务内和事务外对数据的操作。加锁是实现并发控制的一个非常重要的技术。所谓加锁就是事务丁在对某个数据操作之前,先向系统发出请求,封锁其所要使用的数据。加锁后事务丁对其要操作的数据具有了一定的控制权,在事务丁释放它的锁之前,其他事务不能操作这些数据。
具体的控制由锁的类型决定。锁的基本类型有两种:排它锁(Exclusive Lock,也称为X锁或“写”锁)和共享锁(Share Lock,也称S锁或“读”锁)。
·共享锁:若事务T给数据对象A加了S锁,则事务T可以读A,但不能修改A,其他事务可以再给A加S锁,但不能加X锁,直到T释放了A上的S锁为止。即对于读操作(检索)来说,可以有多个事务同时获得共享锁,但阻止其他事务对已获得共享锁的数据进行排它封锁。
共享锁的操作基于这样的事实:检索操作(SELECT)并不破坏数据的完整性,而修改操作(ⅢSERT、DELETE、UPDATE)才会破坏数据的完整性。加锁的真正目的是防止更新带来的失控操作破坏数据的一致性,而对检索操作则可放心地并行进行。
·排它锁:若事务丁给数据对象A加了X锁,则允许丁读取和修改A,但不允许其他事务再给A加任何类型的锁和进行任何操作。即一旦一个事务获得了对某一数据的排它锁,则任何其他事务均不能对该数据进行任何封锁,其他事务只能进入等待状态,直到第一个事务释放了对该数据的封锁。(www.chuimin.cn)
排它锁和共享锁的控制方式可以用表7-1所示的相容矩阵来表示。
表7—1 锁的相容矩阵
在表7-1的加锁类型相容矩阵中,最左边一列表示事务T1已经获得的数据对象上的锁的类型,最上面一行表示另一个事务T2对同一数据对象发出的加锁请求。T2的加锁请求能否被满足在矩阵中分别用“是”和“否”表示,“是”表示事务T2的加锁请求与T1已有的锁兼容,加锁请求可以满足;“否”表示事务T2的加锁请求与T1已有的锁冲突,加锁请求不能满足。
有关数据库技术与应用教程的文章
前面讨论的并发控制算法都是悲观算法。反之,夭折该事务,并重新启动它。图9.7乐观事务的执行阶段可以设计一个基于封锁的乐观并发控制算法。不过原始乐观建议是基于时标序的。论文提出,事务冲突并不很频繁时,乐观算法的性能优于封锁算法的性能。乐观算法的一个主要缺点是存储开销较大。为了能够验证,乐观机制必须存储其他已终止事务的读集和写集。然而,减少了并发度,因为这仅让一个事务运行。......
2023-10-28
有多种并发控制算法的分类方式。按照同步原语可以将并发控制算法分成两类:基于互斥存取共享数据的算法和将事务排序按规则执行的算法。图9.10并发控制算法的分类●在主本封锁中,将每个封锁单元的某个副本指定为主本,在访问该单元时主本必须封锁。这些算法可以分成基本TO、多版本TO和保守TO等。实际上,在某些基于封锁的算法中也使用时标,因为这样可以改进效率和并发性,我们称为混合算法。......
2023-10-28
不像基于封锁的算法,基于时标的并发控制算法不通过互相排斥来维持可串行化。这里,唯一性是时标的第一个性质。协调事务管理器为每个事务指定时标,确定每个数据项存放的节点,并向这些节点发送执行相关操作的命令。下面的算法称为基本时标序事务管理算法,记作BTO-TM。严格2PL算法要求封锁必须推迟到事务的提交或夭折才释放,同样也可以给出一个严格的TO算法。......
2023-10-28
基于封锁的并发控制的主要思想是,保证冲突操作共享的数据一次只能由一个操作存取。表9.1封锁模式的兼容矩阵在基于封锁的系统中,这是由封锁管理器来实现的。封锁管理器检查该封锁单元是否已上锁。事务结束时,解除全部封锁。图9.2表示一旦完成对一个数据项的存取,封锁管理器就释放对数据项的封锁。图9.22PL的形态图9.3严格的两阶段封锁图严格的两阶段封锁管理需要对算法9.1略作修改。算法9.2 严格的两阶段封锁LM算法。......
2023-10-28
多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,称这种调度为可串行化的调度。目前的数据库管理系统普遍采用封锁方法来实现并发操作的可串行性,从而保证调度的正确性。两段锁协议是保证并发调度的可串行性的封锁协议。图7—12并发事务的不同调度......
2023-11-24
在多版本并发控制方法中经常采用异地更新技术,即不是直接在旧数据项上修改,而是先创建一个数据项的新版本,然后让新版本取代旧版本。使用MVCC的好处是,读请求不会因为存在写操作而被阻塞。数据库中的只读访问常常检索的是已被提交的数据项版本。系统的开销主要发生在相同数据项的多个版本上。有一种称为快照隔离的技术用于实现支持MVCC的数据库。SI的开销虽然小,但弱化了可串行化。SI包含以下两个重要性质。......
2023-10-28
分布式数据库管理系统的并发控制是为了保证多用户分布环境下的数据库一致性。可串行化是涉及并发控制的一个重要理论。条件1表示调度涉及的域是一个由各个事务构成的集合。例9.2所示的是一个串行调度。下面我们讨论可串行化的问题。定义9.3 一个调度Sc是可串行的,当且仅当Sc冲突等价于一个串行调度,这种可串行化通常称为冲突等价可串......
2023-10-28
相关推荐