`
445822357
  • 浏览: 740378 次
文章分类
社区版块
存档分类
最新评论

事务并发调度之封锁技术

 
阅读更多

什么是事务


事务是数据库逻辑工作单位,是用户定义的一组操作序列。具有原子性、一致性、隔离性和持续性。原子性表示操作不可分割,要么都做,要么都不做。一致性表示数据库从一个一致性状态变换到另一个一致性状态隔离性表示事务执行过程中不被其它事务打扰持续性表示事务一旦提交,它对数据库中数据的改变就应该是永久性的。


事务并发的问题


(1)丢失修改,当事务1在t1时刻读取A=16,事务2在t2时刻读取A=16,在t3时刻事务1修改A=A-1;写回数据库A=15。在t4时刻事务2更新A=A-1,写回数据库A=15。这样导致了事务1的修改丢失。如下图:


(2)不可重复读,当事务1在t1时刻读取A=50,读取B=100,求和=150,事务2在t2时刻更新B=100,修改B=B*2,写回B=200,在t3时刻事务1读取值校对重读B,发现B变为200与第一次读取不一致,如下图:


(3)脏读,事务1在t1时刻读取C=100,更新C=C*2写回数据库C=200,事务2在t2时刻读取C=200,在t3时刻事务1执行了更新C的回滚操作,C=100,那么此时就导致事务2读取的C为脏数据。如下图:


产生以上问题的原因:由于事务的并发破坏了事务的隔离性,导致各个事务并发出现干扰,要想是事务能达到隔离特性,就需要串行调度,也就是某一时刻只能有一个事务完成,其它事务等待。


封锁解决并发问题


封锁:是事务T在对某个数据操作时,例如,对表、记录等操作之前,先向系统发出请求,对其加锁,加锁后事务T就对该数据拥有了一定的控制,在事务T没有释放它的锁之前,其它事务不能更新该数据

封锁类型:排它锁(exclusive lock)也成为X锁,共享锁(share lock)也成为S锁。其关系为:对数据加X锁后,其它事务不能加任何锁,对数据加S锁后,其它事务可以加S锁,但不能加X锁。

采用三级封锁协议解决事务并发产生的问题:

(1)一级封锁协议,解决修改丢失问题。描述如下:当事务T在修改数据R之前必须先对其加X锁,直到事务结束。如图:


事务1在读取A进行修改之前先对A加X锁,当事务2再请求对A加X锁时被拒绝,只能等待事务1释放A上的锁。

(2)二级封锁协议,解决修改丢失和脏读问题。描述如下:在一级封锁协议基础上,当事务读取数据R之前必须先对其加S锁,读完后释放S锁。如图:


事务1在对C修改之前先加X锁,修改后写回磁盘,事务2请求数据C,首先请求在C上加S锁,因为事务1加了X锁,事务2只能等待事务1释放X锁,当事务1由于某种原因回滚C=100,释放X锁后,事务2获取S锁,读取C=100,避免了脏读。

(3)三级封锁协议,解决修改丢失,脏读,不可重复读。描述如下:在一级封锁协议基础上,当事务读取数据R时必须先加S锁,当整个事务读取结束后释放S锁。如下图:


事务1在读取A,B之前,先对A,B加S锁,这样当其它事务只能对A,B加S锁,而不能加X锁,因此其它事务只能查询而不能修改A,B。所以当事务2修改B申请为其加X锁时被拒绝,只能等待事务1释放S锁。由于事务1没有结束因此S锁被占用,事务2等待,此时当事务1再次校验B时,读取B=100,避免了不可重复读。

分享到:
评论

相关推荐

    数据库并发处理控制 pdf

    8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结

    数据库5-1 事务处理技术-并发控制1

    1. 为什么需要并发控制 2. 事务调度及可串行性 3. 基于封锁的并发控制方法 4. 基于时间戳的并发控制方法 5. 基于有效性确认的并发控制方法

    数据库恢复和并发控制

    掌握事务的概念及性质 掌握数据库恢复的基本技术和策略 1、了解并发操作可能产生的数据不一致性 2、掌握并发控制的技术:封锁机制、三级封锁协议、 ...3、掌握并发调度的正确性标准和技术(可串行性、 两段锁协议)

    杜金莲教授分布式数据库实战视频教程高级数据库视频教程

    杜金莲教授分布式数据库实战视频教程 高级数据库视频教程课程主要讲解查询处理及优化,数据管理与恢复技术,事务并发调度,基于封锁的并发控制机制,并发控制的其他机制课程目录:<第1讲 数据文件的组织与索引技术>...

    数据库九(并发控制)

    事务并发执行带来的问题 会产生多个事务同时存取同一数据情况 可能会存取和存储不正确的数据,破坏事务一致性和数据库的一致性 一、并发控制概述 并发控制机制的任务: 对并发操作进行正确调度;保证事务的隔离性;...

    06讲-并发处理 new1

    1. 为什么需要并发控制 2. 事务调度及可串行性 3. 基于封锁的并发控制方法 4. 基于时间戳的并发控制方法 5. 基于有效性确认的并发控制方法

    [详细完整版]15数据库.doc

    串行调度:数据库中,一个调度中,属于一个事务的所有操作连续执行,称之为串行调 度。 可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行的执 行这些事务时的结果相同,称这种调度策略...

    数据库系统-下-第22讲模拟练习题解析

    10. T1,T2是两个事务,图(a)(b)给出这两个事务的两种调度S1,S2,关于S1,S2,说法正确的选项是_____________。 A、S1是可串行化调度,S2是可串行化调度 B、S1是可串行化调度,S2是不可串行化调度 ==C、S1是不可...

    数据库系统实现

    书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分—存储管理器、查询处理器和事务管理器的实现技术。书中还对信息集成的最新技术,例如数据仓库、OLAP、数据挖掘、Mediator、数据...

    数据库系统概论名词解释.doc

    并发控制 数据库的并发控制是指数据库合理调度并发事务,避免并发事务之间的相互干扰造成 数据的不一致性。在并发控制中一般采取封锁的机制。 试题三 1.函数依赖: 函数依赖:设R(U)是属性集U上的关系模式。X,Y是U...

    网络数据库课件ppt(web数据库ppt)

    1、并发控制概述2、封锁3、封锁协议4、死锁5、并发调度的可串行性6、两段锁协议 1.基本要求 (1)理解死锁。 (2)掌握网络数据库涉及的相关知识 2.重点、难点 重点:掌握并发控制的基本概念和方法 难点:数据库的...

    分布式数据库系统-复习.doc

    悲观并发控制法 乐观并发控制法 常用的基本封锁算法有: 、 、 和 。 简单的分布式封锁方法 主站点封锁法 主副本封锁法 快照方法 预防死锁的方法有 和 两种类型。 非占先权方法 占先权方法 检测分布式死锁的三种...

    SQL数据库系统原理(二)———乐观锁与悲观锁、MVCC、范式理论、SQL和NoSQL比较

    两端锁协议:加锁和解锁分两阶段执行,为事务可串行化调度提供支持 隐式和显式锁定:MySQL的InnoDB引擎采用两端锁协议,自动加锁,属于隐式锁定,同时也可以显式锁定 乐观锁与悲观锁 乐观锁和悲观锁都是为了事务的...

    数据库系统概述.doc

    并发调度:事务、数据不一致性、可串行化调度。 5.封锁协议:三级封锁协议、两段锁协议。 【考试要求】 理解:查询优化的必要性以及优化的一般策略。 理解:事务的概念。 理解:并发操作可能带来的数据不一致现象。...

    C/C++笔试题(附答案,华为面试题系列)

    答:支持,设立封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据 的一致性和准确性,行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不 被其它用户所修改。因而行级锁即可保证数据的一致...

    javaSE代码实例

    6.1.3 面向对象技术的背景和特点 79 6.2 类的定义与对象的创建 80 6.3 成员变量 81 6.3.1 成员变量的开发与使用 81 6.3.2 成员变量的初始值 82 6.3.3 对象引用变量的比较 84 6.4 方法 85 6.5 变长...

Global site tag (gtag.js) - Google Analytics