数据库原理及应用第7章课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题7
1、试述事务的概念及事务的四个特性。
事务(Transaction)是用户定义的一个数据库操作序列,这些操作是一个完整的工作单元,一个事务内的所有语句被作为一个整体,这些操作要么全做,要么全不做。事务是数据库环境的中的逻辑单元,相当于操作系统中的进程。
为了保证数据库中数据的正确性,一个事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability )。这四个特性简称ACID 特性。
2、试述事务的状态及转换。
3、在数据库中为什么要并发控制并发控制能保证事务的哪些特性
数据库的一个明显的特点是多个用户共享数据库资源,尤其是多用户可以同时存取相同的数据。在这样的系统中,在同一时刻并发运行的事务数可达数百个。若对事务的并发操作不加以控制,就会造成数据存、取的错误,破坏了数据的一致性和完整性。
并发控制可以防止数据不一致性出现。
4、并发操作可能会产生哪几类数据不一致用什么方法可以避免不一致性的情况
并发操作带来的数据不一致性分为四种情况:丢失数修改、读“脏”数据、不可重复读和产生“幽灵”数据。
在数据库环境下,进行并发控制的主要技术有封锁(Locking)、时间戳(Timestamp)和乐
观控制法。商用的DBMS一般都采用封锁方法。
5、什么是封锁基本的封锁类型有哪些试述它们的含义。
封锁机制,即加锁(Locking),是一种并发控制机制,是用来调整对共享目标的并行存取的技术。事务通过向封锁管理程序的系统组成部分发出请求而对事务加锁。
基本封锁类型有两种:共享锁(Share Locks,简记为S锁或读锁)和排它锁(Exclusive Locks,简记为X锁或写锁)。
6、如何用封锁机制保证数据的一致性
在运用X锁和S锁对数据对象加锁时,还需要约定一些规则,这些规则为封锁协议或加锁协议(Locking Protocol)。对封锁方式加不同的规则,就形成了各种不同级别的封锁协议。不同级别的封锁协议所能达到的一致性级别是不同的。
7、什么样的并发调度是正确的调度
可串行性(Serializability)是并发事务正确调度的准则。按照这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。
8、理解并解释下列术语的含义:
封锁、活锁、死锁、排他锁、共享锁、可串行化的调度、两段锁协议。
1)加锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,封锁其要使用的数据。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。
2)活锁:如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……,T2有可能永远等待,这就是活锁。
3)死锁:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁,接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁。这样T1在等待T2,而T2又在等待T1,T1和T2两个事
务永远不能结束,形成死锁。
4)共享锁:
若事务T对数据对象A加上S锁,则事务T可以读A,但不能修改A。其它事务只能再对A 加S锁,而不能加X锁,直到T释放A上的S锁。这就保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
5)排他锁:
若事务T对数据对象A加上X锁,则只允许T读取和修改A,但不允许其它事务再对A 加任何类型的锁和进行任何操作,直到T释放A上的锁。这就保证其他事务在T释放A上的锁之前不能再读取和修改A 。
6)多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化(Serializable)调度。
7)所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。具体内容如下:
①在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁;
②在释放一个封锁之后,事务不再申请和获得任何其他封锁。
9、数据库中为什么要有恢复子系统它的功能是什么
系统故障会丢失这些事务对数据的修改,使数据库处于不一致状态。
恢复子系统在系统重启时,撤销所有未完成的事务,并重做已经提交的事务,以保证将数据库真正恢复到一致状态。
10、数据库运行过程中可能产生的故障有几类哪些故障影响事务的正常执行哪些
故障破坏数据库数据
1)事务内部的故障
事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理的。
事务故障意味着事务没有达到预期的终点,因此,数据库可能处于不正确的状态。恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经作出的任何对
数据库的修改,使得该事务好像根本没有启动一样。这类恢复操作称为事务撤销(UNDO)。
2)系统故障
系统故障又称为软故障,是指造成系统停止运转,要使得系统重新启动的故障。例如,硬件错误(如CPU故障)、操作系统故障、DBMS代码错误、系统断电等都是系统故障。这样的故障会影响正在运行的所有事务,但不破坏数据库。
3)其他故障
介质故障或由计算机病毒引起的故障或破坏可归为其他故障。
介质故障常称为硬故障,指外存故障,如磁盘损坏、磁头碰撞等。这类故障会对数据库造成破坏,并影响正在操作数据库的所有事务。这类故障发生的可能性小得多,但破坏性最大。
各种故障对数据库的影响有两种可能性:一是数据库本身被破坏;二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。
11、数据库恢复技术有哪些
1)利用备份技术
2)利用事务日志
3)利用镜像技术
12、什么是数据库的备份
数据备份是指定期或不定期地对数据库数据进行复制,可以将数据复制到本地机器上,也可以复制到其他机器上,也称为数据转储。
13、什么是日志文件为什么要设日志文件
日志文件(log)是用来记录事务对数据库的更新操作的文件。
具体的作用是:
a)事务故障恢复和系统故障恢复必须用日志文件。
b)在动态备份方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。