第八章-数据库并发控制练习和答案.docx
4页第八章-数据库并发控制练习和答案第八章 数据库并发控制 一、选择题 1. 为了防止一个用户得工作不适当地影响另一个用户,应该采取( ) A、 完整性控制 B、 访问控制 C、 安全性控制 D、 并发控制 2、 解决并发操作带来得数据不一致问题普遍采用( )技术 A、 封锁 B、 存取控制 C、 恢复 D、 协商 3. 下列不属于并发操作带来得问题就是( ) A、 丢失修改 B、 不可重复读 C、 死锁 D、 脏读 4. DBMS普遍采用( )方法来保证调度得正确性 A、 索引 B、 授权 C、 封锁 D、 日志 5.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,这就是( ) A、 一级封锁协议 B、 二级封锁协议 C、 三级封锁协议 D、 零级封锁协议 6. 如果事务T获得了数据项Q上得排她锁,则T对Q( ) A、 只能读不能写 B、 只能写不能读 C、 既可读又可写 D、 不能读也不能写 7设事务T1与T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作( ) . A、 T1正在写A,T2要读A B、 T1正在写A,T2也要写A C、 T1正在读A,T2要写A D、 T1正在读A,T2也要读A 8。
如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突得操作就是( ) . A、 一个就是DELETE,一个就是SELECT B、 一个就是SELECT,一个就是DELETE C、 两个都就是UPDATE D、 两个都就是SELECT 9. 在数据库系统中,死锁属于( ) A、 系统故障 B、 事务故障 C、 介质故障 D、 程序故障 二、简答题 1、 在数据库中为什么要并发控制? 答: 数据库就是共享资源,通常有许多个事务同时在运行 当多个事务并发地存取数据库时就会产生同时读取与/或修改同一数据得情况.若对并发操作不加控制就可能会存取与存储不正确得数据,破坏数据库得一致性所以数据库管理系统必须提供并发控制机制 2、 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致得情况? 答: 并发操作带来得数据不一致性包括三类:丢失修改、不可重复读与读“脏”数据. (1)丢失修改(Lost Update) 两个事务T1与T2读入同一数据并修改,T2提交得结果破坏了(覆盖了)T1提交得结果,导致T1得修改被丢失 (2)不可重复读(Non-Repeatable Read) 不可重复读就是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。
(3)读“脏"数据(Dirty Read) 读“脏"数据就是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过得数据恢复原值,T2读到得数据就与数据库中得数据不一致,则T2读到得数据就为“脏”数据,即不正确得数据 避免不一致性得方法与技术就就是并发控制最常用得并发控制技术就是封锁技术. 也可以用其她技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制 3、 什么就是封锁? 答: 封锁就就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定得控制,在事务T释放它得锁之前,其她得事务不能更新此数据对象 封锁就是实现并发控制得一个非常重要得技术. 4、 基本得封锁类型有几种?试述它们得含义. 答: 基本得封锁类型有两种: 排它锁(Exclusive Locks,简称X锁) 与共享锁(Share Locks,简称S锁) 排它锁又称为写锁若事务T对数据对象A加上X锁,则只允许T读取与修改A,其她任何事务都不能再对A加任何类型得锁,直到T释放A上得锁.这就保证了其她事务在T释放A上得锁之前不能再读取与修改A。
共享锁又称为读锁若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其她事务只能再对A加S锁,而不能加X锁,直到T释放A上得S锁.这就保证了其她事务可以读A,但在T释放A上得S锁之前不能对A做任何修改 5、 什么就是封锁协议?不同级别得封锁协议得主要区别就是什么? 答: 在运用封锁技术对数据加锁时,要约定一些规则.例如,在运用X锁与S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等这些约定或者规则称为封锁协议(Locking Protocol)对封锁方式约定不同得规则,就形成了各种不同得封锁协议.不同级别得封锁协议,例如《概论》中介绍得三级封锁协议,三级协议得主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间得长短) 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放 二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁. 三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放 6、 不同封锁协议与系统一致性级别得关系就是什么? 答: 不同得封锁协议对应不同得一致性级别。
一级封锁协议可防止丢失修改,并保证事务T就是可恢复得在一级封锁协议中,对读数据就是不加S锁得,所以它不能保证可重复读与不读“脏”数据 二级封锁协议除防止了丢失修改,还可进一步防止读“脏”数据在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读 在三级封锁协议中,无论就是读数据还就是写数据都加长锁,即都要到事务结束时才释放封锁所以三级封锁协议除防止了丢失修改与不读“脏”数据外,还进一步防止了不可重复读. 7、 试述活锁得产生原因与解决方法. 答: 活锁产生得原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁 避免活锁得简单方法就是采用先来先服务得策略当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁得先后次序对事务排队,数据对象上得锁一旦释放就批准申请队列中第一个事务获得锁 8、 请给出预防死锁得若干方法. 答: 在数据库中,产生死锁得原因就是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其她事务封锁得数据加锁,从而出现死等待 防止死锁得发生其实就就是要破坏产生死锁得条件。
预防死锁通常有两种方法: (1)一次封锁法 要求每个事务必须一次将所有要使用得数据全部加锁,否则就不能继续执行 (2)顺序封锁法 预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁 不过,预防死锁得策略不大适合数据库系统得特点 9、 请给出检测死锁发生得一种方法,当发生死锁后如何解除死锁? 答: 数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除得方法. DBMS中诊断死锁得方法与操作系统类似,一般使用超时法或事务等待图法 超时法就是:如果一个事务得等待时间超过了规定得时限,就认为发生了死锁超时法实现简单,但有可能误判死锁,事务因其她原因长时间等待超过时限时,系统会误认为发生了死锁若时限设置得太长,又不能及时发现死锁发生. DBMS并发控制子系统检测到死锁后,就要设法解除.通常采用得方法就是选择一个处理死锁代价最小得事务,将其撤消,释放此事务持有得所有锁,使其她事务得以继续运行下去当然,对撤销得事务所执行得数据修改操作必须加以恢复 10、 什么样得并发调度就是正确得调度? 答: 可串行化(Serializable)得调度就是正确得调度. 可串行化得调度得定义:多个事务得并发执行就是正确得,当且仅当其结果与按某一次序串行地执行它们时得结果相同,我们称这种调度策略为可串行化得调度。
11、 试述两段锁协议得概念. 答: 两段锁协议就是指所有事务必须分两个阶段对数据项加锁与解锁 · 在对任何数据进行读、写操作之前,首先要申请并获得对该数据得封锁; · 在释放一个封锁之后,事务不再申请与获得任何其她封锁 “两段”得含义就是,事务分为两个阶段: 第一阶段就是获得封锁,也称为扩展阶段在这阶段,事务可以申请获得任何数据项上得任何类型得锁,但就是不能释放任何锁 第二阶段就是释放封锁,也称为收缩阶段在这阶段,事务释放已经获得得锁,但就是不能再申请任何锁 12、 为什么要引进意向锁? 意向锁得含义就是什么? 答: 引进意向锁就是为了提高封锁子系统得效率.该封锁子系统支持多种封锁粒度 原因就是:在多粒度封锁方法中一个数据对象可能以两种方式加锁-显式封锁与隐式封锁.因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式与隐式)封锁与之冲突;还要检查其所有上级结点与所有下级结点,瞧申请得封锁就是否与这些结点上得(显式与隐式)封锁冲突;显然,这样得检查方法效率很低为此引进了意向锁 意向锁得含义就是:对任一结点加锁时,必须先对它得上层结点加意向锁。
例如事务T要对某个元组加X锁,则首先要对关系与数据库加IX锁.换言之,对关系与数据库加IX锁,表示它得后裔结点-某个元组拟(意向)加X锁 引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点得封锁冲突了.例如,事务T要对关系R加X锁时,系统只要检查根结点数据库与R本身就是否已加了不相容得锁(如发现已经加了IX,则与X冲突),而不再需要搜索与检查R中得每一个元组就是否加了X锁或S锁 13、 试述常用得意向锁:IS锁,IX锁,SIX锁,给出这些锁得相容矩阵 答: IS锁 如果对一个数据对象加IS锁,表示它得后裔结点拟(意向)加S锁例如,要对某个元组加S锁,则要首先对关系与数据库加IS锁 IX锁 如果对一个数据对象加IX锁,表示它得后裔结点拟(意向)加X锁例如,要对某个元组加X锁,则要首先对关系与数据库加IX锁 SIX锁 如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX 相容矩阵(略) 14、 理解并解释下列术语得含义:封锁,活锁,死锁,排它锁,共享锁,并发事务得调度,可串行化得调度,两段锁协议。
答:(略,已经在上面有关习题中解答) *25、 试述您了解得某一个实际得DBMS产品得并发控制机制. 答:(略,参见《概论》第8节,简单介绍了有关Oracle得并发控制机制) 第 4 页 共 4 页。





