南昌网站建设排行,个人网站工商备案,网站网页设计公司有哪些,本地网站建设流程数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 1.什么是数据库中的事务#xff1f;它有哪些特性#xff1f;这些特性的含义是什么…数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 1.什么是数据库中的事务它有哪些特性这些特性的含义是什么恢复技术能保证事务的哪些特性 事务 是用户定义的一个数据库操作序列这些操作要么全做要么全不做是个不可分割的工作单位。
事务的特性
原子性A 事务中的操作要么都做要么都不做一致性C 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态隔离性 I 一个事务的执行不能被其他事务干扰持续性D 一个事务一旦提交它对数据库中数据的改变就应该是永久性的
恢复技术可以保证事务的原子性和持续性
保证原子性UNDO可以保证将未成功提交的操作取消REDO可以保证将成功提交的操作都完成因此可以保证事务的原子性保证持续性REDO可以保证事务只要提交改变一定被永久实现 2.登记日志文件时为什么必须先写日志文件后写数据库 如果先写数据库在写日志之前发生了故障没有登记这个修改以后就无法恢复这个修改了如果先写日志文件在恢复时只是多执行了一次UNDO 操作并不会影响数据库的正确性。 3.针对不同的故障给出恢复的策略和方法。 对于事务故障
反向扫描文件日志查找该事务的更新操作对该事务的更新操作执行逆操作即将日志记录中“更新前的值”写人数据库直至读到此事务的开始标记
对于系统故障
正向扫描日志文件找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)对未完成的事务队列中的各个事务进行UNDO处理对已经提交的事务队列中的各个事务进行REDO处理
对于介质故障
装人最新的数据库后备副本(离故障发生时刻最近的转储副本)使数据库恢复到最近一次转储时的一致性状态装人转储结束时刻的日志文件副本启动系统恢复命令由DBMS完成恢复功能即重做已完成的事务 4.什么是检查点记录检查点的内容应该包括哪些 检查点记录 是一类新的日志记录增加一个重新开始文件并让恢复子系统在登录日志文件期间动态维护日志。
检查点的内容
建立检查点时刻所有正在执行的事务清单这些事务的最近一个日志记录的地址 5.在数据库恢复中使用检查点有什么好处优点试举一个具体例子加以说明 节约时间和成本利用日志技术进行数据库恢复时恢复子系统必须搜索整个日志这将耗费大量的时间避免重复工作需要 REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了恢复子系统又会重新执行这些操作浪费大量时间
例如 检查点技术只需从 t c {t_c} tc开始扫描日志不需要从头开始 事务 T 3 {T_3} T3的更新实际上已经写到数据库中了检查点技术在恢复时没有再对其进行REDO处理 6.试述使用检查点方法进行恢复的步骤。 在重新开始文件中找到最后一个检查点记录在日志文件中的地址由该地址在日志文件中找到最后一个检查点记录 由该检查点记录得到检查点建立时刻所有正在执行的事务清单 ACTIVE-LIST 建立两个事务队列 UNDO-LIST需要执行 UNDO 操作的事务集合REDO-LIST需要执行 REDO 操作的事务集合 把 ACTIVE-LIST 暂时放人 UNDO-LIST 队列REDO 队列暂为空 从检查点开始正向扫描日志文件 如有新开始的事务 T把 T 暂时放人 UNDO-LIST 队列如有提交的事务 T把 T 从 UNDO-LIST 队列移到 REDO-LIST 队列直到日志文件 结束 对 UNDO-LIST 中的每个事务执行 UNDO 操作对 REDO-LIST 中的每个事务执 行 REDO 操作 7.什么是数据库镜像它有什么用途 数据库镜像 数据库镜像即根据 DBA 的要求自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。 每当主数据库更新时DBMS 自动把更新后的数据复制过去即DBMS自动保证镜像数据与主数据的一致性。
数据库镜像的用途
用于数据库恢复当出现介质故障时镜像磁盘可继续使用同时 DBMS自动利用镜像磁盘数据进行数据库的恢复提高数据库的可用性在没有出现故障时当一个用户对某个数据加排他锁进行修改时其他用户可以读镜像数据库上的数据而不必等待该用户释放锁 8.在数据库中为什么需要并发控制并发控制技术能保证事务的哪些特性 并发控制的重要性
数据库中通常会有多个事务在同时进行可能会产生同时读取或修改同一数据的情况如果不对并发操作加以控制就可能会导致存取和存储不正确的数据破坏数据库的一致性因此需要提供并发控制
并发控制可以保证事务的一致性和隔离性
第一题中恢复技术可以保证事务的原子性和持续性 9.并发操作可能会产生哪几类数据不一致用什么方法可以避免各种不一致的情况 并发可能会产生的不一致性
丢失修改T1和T2同时读和修改同一数据T2提交的结果会导致T1的修改丢失不可重复读T1读数据后T2更新同一数据使T1无法再现前一次的读取结果读脏数据T1修改某一数据后写回磁盘T2读取同一数据后T1由于某种原因被撤销此时数据恢复原值T2读到的数据就与数据库中的数据不一致
常用方法 封锁、时间戳、乐观控制法和多版本并发控制 10.什么是封锁基本的封锁类型有几种试述它们的含义。 封锁 封锁就是事务T在对某个数据对象例如表、记录等操作之前先向系统发出请求对其加锁。 加锁后事务T就对该数据对象有了一定的控制在事务T释放它的锁之前其他的事务不能更新或读取此数据对象
基本的封锁类型 排他锁X锁若事务T对数据对象A加上锁则只允许T读取和修改A其他任何事务都不能再对A加任何类型的锁直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A 共享锁S锁若事务T对数据对象A 加上S锁则事务T可以读A但不能修改A其他事务只能再对A加S锁而不能加X锁直到T释放A上的S 锁。这就保证了其他事务可以读A但在T释放A上的S锁之前不能对A做任何修改 11.什么是活锁试述活锁产生原因和解决方法。 活锁 活锁的含义是该等待事务等待时间太长似乎被锁住了实际上可能被激活。如果事务T1封锁了数据R事务T2又请求封锁R于是T2等待。T3也请求封锁R当T1释放了R上的封锁之后系统首先批准了T3的请求T2仍然等待。然后T4又请求封锁R当T3释放了R上的封锁之后系统又批准了T4的请求······T2有可能永远等待。
活锁的产生原因 当一系列封锁不能按照其先后顺序执行时就可能导致一些事务无限期等待某个封锁从而导致活锁。
活锁的解决方法 避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时封锁子系统按请求封锁的先后次序对事务排队数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。 12.什么是死锁如何预防、检测并解除死锁 死锁 如果事务T1封锁了数据R1T2封锁了数据R2然后T1又请求封锁R2因T2已封锁了R2于是T1等待T2释放R2上的锁。接着T2又申请封锁R1因,1已封锁了R1T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2而T2又在等待T1的局面T1和T2两个事务永远不能结束形成死锁。
预防死锁
一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁否则就不能继续执行顺序封锁法预先对数据对象规定一个封锁顺序所有事务都按这个顺序实行封锁
检测死锁
超时法如果一个事务的等待时间超过了规定的时限就认为发生了死锁等待图法并发控制子系统周期性地生成事务等待图并进行检测。如果发现图中存在回路则表示系统中出现了死锁
解除死锁 通常采用的方法是选择一个处理死锁代价最小的事务将其撤销释放此事务持有的所有锁使其他事务得以继续运行下去。 13.在并发控制中封锁协议是指什么 封锁协议通常指何时申请X锁或S锁、持锁时间、何时释放等规则如三级封锁协议 一级封锁协议事务T在修改数据R之前必须先对其加X锁直到事务结束才释放二级封锁协议在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁读完后即可释放S锁三级封锁协议在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁直到事务结束才释放 14.什么是两段锁协议遵守两段锁协议的事务可能会发生死锁吗试举例说明。 两段锁协议 是指所有事务必须分两个阶段对数据项加锁和解锁。
在对任何数据进行读、写操作之前首先要申请并获得对该数据的封锁在释放一个封锁之后事务不再申请和获得任何其他封锁
遵守两段锁协议的事务可能发生死锁因为两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁。 15.为什么要引入意向锁意向锁的含义是什么 意向锁 对任一结点加锁时必须先对它的上层结点加意向锁。引进意向锁后系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。
引进意向锁是为了提高封锁子系统的效率 在多粒度封锁方法中一个数据对象可能以两种方式加锁一一显式封锁和隐式封锁因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突还要检查其所有上级结点和所有下级结点看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突。显然这样的检查方法效率很低。