• 数据库系统及应用复习——第十章数据库恢复技术与第十一章并发调度的可串行性


    第十章数据库恢复技术

    一、数据库的恢复

    1、事务的概念:事务是一个操作序列。事务以BEGIN TRANSACTION语句开始,以COMMIT(提交)语句或ROLLBACK(回退或撤消)语句结束。 一个程序的执行可通过若干事务的执行序列来完成。

    2、事务的性质:

    原子性(atomicity):这些操作要么什么都做,要么都不做,是一个不可分割的工作单位。

    一致性(consistency):一个符合逻辑的稳定状态到另一个符合逻辑的稳定状态

    隔离性(isolation):并发执行的事务之间是不能互相干扰的

    持久性(durability):一个事务一旦提交对数据的改变就是永久的。

    3、故障类型和恢复方法

    故障类型恢复方法:

    • 事务故障:应用程序自动进行恢复;
    • 系统故障:重新启动时则恢复子系统将所有非正常终止的事务回退,恢复到正确状态;
    • 介质故障:通过DBMS把其他务份磁盘或第三级介质中的内容再复制回来

    4、恢复的基本原则和实现方法

    恢复的基本原则:“冗余”,即数据的重复存储。

    实现方法有:

    (1)定期对数据库进行复制或转储(dump)。(静态转储(无运行事务时进行)、动态转储(随时可以,转储与事务并发执行)、海量转储(一次性转储全部数据库)和增量转储(每次只转储更新部分)。)

    (2)建立“日志”文件。(更新操作,用于恢复)

    5、运行记录优先原则(即先记录,再更新,先记完,再结束)

    (1)至少要等相应的运行记录已经写入“日志”文件后,才能允许事务往数据库在写数据。

    (2)直到事务的所有运行记录都已写入运行“日志”文件后,才能允许事务完成“END TRANSACTION”处理。

    具有有检查点的恢复技术:P303UNDO队列与REDO队列
    重新开始文件/检查点(日志文件中)

    第十一章并发调度的可串行性

     1、并发控制带来的三类问题:  

    • (1)丢失更新的问题(同时读,同时修改,后者的修改使得前者的修改丢失了)
    • (2)不可重复读(一个事务要都多次,另一个事务要修改)
    • (3)读“脏数据”。(一个读,一个写了又撤销; 未提交的随后又被撤销)    

    P311图11.2

    问题的主要原因:办法操作破坏了事务的隔离性

    2、为解决并发控制带来的问题,通常要采用封锁(locking)技术,常用的封锁有:排它型封锁(X封锁)(写锁)和共享型封锁(S封锁)(读锁)两种。  

    X最强,IS最弱

    P322图11.11数据锁的相容矩阵

     3、死锁和活锁

    活锁:是指某个事务永远处于等待状态,得不到执行的现象。

    方法:采用“先来先服务”策略。    

    死锁:有两个或以上的事务处于等待状态,每个事务都在等待另一个事务解除封锁,它才能继续执行下去,结果任何一个事务都无法执行,这种现象就是死锁。    

    方法:由DBMS中的“死锁测试程序”来检查,如发现死锁则牺牲一个事务,并做回退操作,解除它的所有封锁。    

    意向锁:对于某个结点加意向锁,则说明该节点的下层结点正在被加锁。

    4、并发事务正确调度的准则是事务可串行化。    

    5、事务遵守两段锁协议是可串行化调度的充分条件

  • 相关阅读:
    算法-模拟
    智能文本纠错API的崭露头角:革命性的写作辅助工具
    2022年中总结
    c++初始之二
    MATLB|实时机会约束决策及其在电力系统中的应用
    docker容器化
    Redis5 持久化
    消息 ByteBuf 详解
    每天分享五款工具,让大家工作生活更顺心
    Ubuntu下安装配置JDK1.7
  • 原文地址:https://blog.csdn.net/m0_54674275/article/details/126403143