文档详情

08数据库保护.pptx

发布:2017-11-02约字共47页下载文档
文本预览下载声明
数据库技术与应用 袁宝库 yuanbaoku@bupt.edu.cn 数据库保护 事务的基本概念 并发控制 数据库备份与恢复 并发控制 并发控制概述 并发控制措施 封锁协议 死锁 并发调度的可串行性 两段锁协议 并发控制概述 数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据, 在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作是在一定的数据上进行的。 当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互干扰的情况。 并发事务的相互干扰示例 A、B两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下: A订票点(事务A)读出航班目前的机票余额数,假设为10张; B订票点(事务B)读出航班目前的机票余额数,也为为10张; A订票点订出6张机票,修改机票余额为10-6 = 4,并将4写回到数据库中; B订票点订出5张机票,修改机票余额为10-5 = 5,并将5写回到数据库中; 丢失数据修改 读“脏”数据 不可重复读 产生“幽灵”数据 属于不可重复读的范畴。 指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T1再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。 这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。 并发控制措施 控制目标:事务运行过程中尽可能隔离事务外操作对本事务数据环境的影响。 在数据库环境下,并发控制的主要方式是封锁机制,即加锁(Locking),加锁是一种并行控制技术,是用来调整对共享目标,如DB中共享的记录并行存取的技术。 基本的封锁类型 共享锁:指对于读操作(检索)来说,可以多个事务同时获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。 排它锁:一旦一事务获得了对某一数据的排它锁,则任何其它事务再不能对该数据进行排它封锁,其它事务只能进入等待状态,直到第一个事务撤销了对该数据的封锁。 排它锁和共享锁的控制方式 T2 T1 X S 无锁 X No No Yes S No Yes Yes - Yes Yes Yes 封锁协议 在运用X锁和S锁对数据对象进行加锁时,还需要约定一些规则,如何时申请X锁或S锁、持锁时间、何时释放锁等。 称这些规则为封锁协议或加锁协议(Locking Protocol)。 对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。 不同级别的封锁协议达到的系统一致性级别不同。 一级封锁协议 对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放。 一级封锁协议可以防止丢失修改,并保证事务T是可恢复的 但不能保证可重复读和不读“脏”数据。 一级封锁协议示例 二级封锁协议 一级封锁协议加上对事务T对要读取的数据加S锁,读完后即释放S锁。 除了可以防止丢失修改外,还可以防止读“脏”数据。 但不能保证可重复读数据。 二级封锁协议示例 三级封锁协议 一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。 除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。 三级封锁协议示例 不同级别的封锁协议总结 死锁 两个事务相互等待对方先释放资源,则会造成死锁。 预防死锁的方法 一次封锁法 一次封锁法是每个事务一次将所有要使用的数据全部加锁。 顺序封锁法 顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。 并发调度的可串行性 多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为可串行化的调度。 可串行性是并发事务正确性的准则,按这个准则,一个给定的并发调度,当且仅当它是可串行化的时,才认为是正确的调度。 两段锁协议 两段锁协议是实现可串行化调度的充分条件。 可以将每个事务分成两个时期:申请封锁期和释放封锁期,申请期申请要进行的封锁,释放期释放所占有的封锁。 在申请期不允许释放任何锁,在释放期不允许申请任何锁,这就是两段式封锁。 数据库备份与恢复 数据库故障的种类 数据库备份 数据库恢复 数据库故障的种类 事务内部的故障 事务故障意味着事务没有达到预期的终点(COMMIT或ROLLBACK),因此,数据库可能处于不正确的状态。 系统故障 指造成系统停止运转、系统要重启的故障。例如,硬件错误(CPU故障)、操作系统故障、突然停电等。 其它故障 介质故障或由计算机病毒引起的故障或破坏。 数据库备份 指定期或不定期地对数据库数据进行复制。 可以复制到本地机器上,也可以复制到其它机器上。 备份的介质可以是磁
显示全部
相似文档