并发控制以及数据库恢复(普通专业).ppt
文本预览下载声明
事务、并发控制以及数据库恢复 ——第十章、第十一章 1.事务的概念 1.1事务的基本概念和特性 所谓事务,用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 SQL事务定义语句: Begin Transaction(Tran) Commit Rollback 事务的特性(ACID): 原子性(A):事务中包含的各种操作要么都做,要么都不做 一致性(C):执行结果从一个一致性状态到另一个一致性状态 隔离性(I):一个事务的执行不能被其它事务干扰 持久性(D):一个事务一旦提交,对数据库中数据的改变是永久性的 2.并发控制 2.1并发操作带来的问题 丢失修改:当一个事务修改了数据,并且这种修改还没有还没有提交到数据库中时,另外一个事务又对同样的数据进行了修改,并且把这种修改提交到了数据库中。这样,数据库中没有出现第一个事务修改数据的结果,好像这种数据修改丢失了一样。 脏读:当一个事务正在访问数据,并对数据进行了修改,而这种修改还没有提交到数据库中,这时,另一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。 不可重复读:在一个事务内,多次读同一数据。在这个事务还没有结束时,另一个事务也访问该同一数据,那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,第一个事务两次读到的数据可能是不一样的。 幻觉读:当事务不是独立执行时发生的一种现象。 2.2锁 解决并发问题,常用方法是只允许事务访问该事务当前锁住的数据项。 对数据项加锁的最常见的形式是共享锁和排他锁。 如果事务获得数据项上的共享锁(S),则该事务可读数据项但不能写。 如果事务获得数据项上的排他锁(X),则该事务可读写数据项。 对于一个给定的锁类型的集合,可以定义一个兼容函数。 假设U和V是任意类型的锁。如果事务T1请求对数据项加U锁,这时,事务T2在数据项上拥有V类型的锁。 如果事务T1可以立即获得在数据项上的U类型锁,则说U和V两种类型的锁是兼容的,否则,不兼容。 相容矩阵(P295,图11.3) 2.3死锁 假设有两个事务T1和T2都对数据项U和V执行操作。 如果T1在U上拥有排他锁,而T2正在申请U上的共享锁,那么T2必须等待T1释放U上的排他锁。 同样,如果T2在V上拥有排他锁,而T1正在申请V上的共享锁,那么T1必须等待T2释放V上的排他锁。 由于两个事务互相等待,哪一个事务都不继续执行下去,这种状态称为死锁状态。 处理死锁有两种方法: A.使用死锁预防协议保证系统永不进入死锁状态 B.允许系统进入死锁状态,然后使用死锁检测和死锁恢复机制进行恢复 预防死锁有两种方法: A.通过对加锁请求进行排序或同时要求获得所有锁来保证不会发生循环等待 B.使用抢占机制和事务回滚 2.5锁的类型 在Microsoft SQL Server系统中,锁定资源的发生有两种基本形式——共享锁和排它锁。 但还有一些特殊情况的锁:意图锁、修改锁和模式锁。 意图锁的三种类型(P304-305): A.意图共享锁 B.意图排它锁 C.意图排它的共享锁 修改锁:系统将要修改一页时使用;在系统修改该页之前,系统自动的把这个修改页锁上升到排它锁,防止锁之间发生冲突。 模式锁:保证当表或索引被另一个会话参考时,不能被删除或修改其结构模式。 Microsoft SQL Server系统提供两种模式锁: 模式稳定锁(确保锁定的资源不被删除) 模式修改锁(确保其他会话不能参考正在修改的资源)。 3.数据库恢复技术概述 3.1数据库恢复概述 原因:计算机系统中硬件故障、软件错误、操作员的失误以及恶意的破坏,轻则造成运行事务非正常中断,重则破坏数据库,使数据库中全部或部分数据丢失。 定义:从错误状态恢复到某一已知的正确状态的功能。 3.2故障种类 事务内部故障 事务没有达到预期的终点,因此数据库可能处于不正确状态。 恢复程序的任务是在不影响其它事务运行的情况下,强行回滚该事务,即撤销该事务已经作出的任何对数据库的修改,这类恢复操作称为事务撤销(UNDO)。 系统故障 造成系统停止运转的任何事件,从而使得系统必须重新启动。 系统故障主要有两种情况: 发生故障时,一些尚未完成的事务的部分结果已送入物理数据库,从而造成数据库可能处于不正确的状态 发生系统故障时,有些已完成的事务有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中 介质故障 又称为硬故障,主要指外存故障。这类故障会破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。 计算机病毒 一种人为的故障或破坏,由一些恶意的人编制的计算机程序。这种程序像微生物学中的病毒一样进行繁殖和传播,造成对计算机系统包括
显示全部