美文网首页
【软考中级数据库】【知识点整理】事务管理

【软考中级数据库】【知识点整理】事务管理

作者: clorislam_cmm | 来源:发表于2024-04-30 16:25 被阅读0次

    事务基本概念

    • 事务是一系列的数据库操作,是数据库应用程序的基本逻辑单位,即应用程序对数据库的操作都应该以事务的方式进行
    • 事务是一个操作序列,这些操作“要么全都做,要么全都不做”,是数据库环境中不可分割的逻辑单位
    • 事务四个特性:
      1)原子性:事务的所有操作在数据库中要么全做要么全都不做
      2)一致性:一个事务独立执行的结果,将保持数据的一致性,即数据不会因为事务的执行而遭受破坏
      3)隔离性:一个事务的执行不能被其他事务干扰。并发事务在执行过程中可能会对同一数据进行操作,这些事务的操作应该不会互相干扰,是相互隔离的
      4)持久性:一个事务一旦提交,它对数据库的改变必须是永久的,即使系统出现故障时也是如此
    • 事务的五种状态:
      1)活动状态:事务的初始状态,事务执行时处于这个状态
      2)部分提交状态:部分提交状态:当操作序列的最后一条语句自动执行后,事务处于部分提交状态这时,事务虽然已经完全执行,但由于实际输出可能还临时驻留在内存中,在事务成功完成前仍有可能出现硬件故障,事务仍有可能不得不中止。因此,部分提交状态并不等于事务成功执行。
      3)失败状态:由于硬件或逻辑等错误,使得事务不能继续正常执行,事务就进入了失败状态。处于失败状态的事务必须进行回滚(ROLLBACK)。这样,事务就进入了中止状态。
      4)中止状态:事务回滚并且数据库恢复到事务开始执行前的状态。
      5)提交状态:当事务成功完成后,称事务处于提交状态。只有事务处于提交状态后,才能说事务已经提交。


      image.png
    • 事务进入中止状态后,系统一般有如下两种选择:
      1)重启事务:当事务中止的原因是软、硬件错误而不是事务内部逻辑错误时,一般采用重启事务的方法。重启事务可以被看成一个新事物
      2)杀死事务:这样做通常是因为事务中止的原因是事务内部的逻辑错误,或者是输入错误,也可能是所需数据在数据库中没找到等原因

    数据库的并发控制

    • 并发操作带来的数据不一致性有三类:丢失修改、不可重复读、读脏数据
    • 排它锁:也称为写锁,对数据进行写操作时进行锁定,只允许对数据加锁的事务进行读取与修改,其他事务不可读也不可改。
    • 共享锁:也成为读锁,用于对数据进行读操作时锁定,对数据进行加锁操作的事务只允许读取不允许修改,其他事务可以对该数据进行加共享锁操作,不能进行加排他锁
    • 封锁协议:
      1)一级锁协议:事务T在修改数据A之前必须对A加X(排他)锁,直至事务结束才能释放X锁。
      2)二级锁协议:是一级锁协议记上事务T在读取数据A之前必须对其加上S锁,读完之后即可释放S锁。但释放后有其他事务对A进行修改,事务T再次读取A时,就会出现不可重复读的错误。
      3)三级所协议:是一级锁协议上加上事务T读取A之前必须对A加上S锁,直到事务结束才释放S锁,解决不可重复读的问题。

    一级可以防止:丢失修改
    二级可以防止:丢失修改和脏读
    三级可以防止:丢失修改、脏读、不可重复读

    • 两段锁:是指对任何数据进行读写之前都必须对数据进行加锁,在释放一个封锁前,事务不在申请和获得任何其他封锁。两段锁的含义是指食物分为两个阶段,第一级阶段是获取锁,第二个阶段是释放锁。
    • 两段锁协议与可串行化:如果事务遵循两段锁协议,那么他们的并发调度是可串行化的。

    数据库的备份恢复

    数据库备份

    • 数据备份:数据转储时将数据库自制到另一个磁盘或者磁带上保存的过程
      1)静态转存:转储期间不允许对数据库进行任何存取、修改操作
      2)动态转存:转储期间允许对数据库进行存取、修改操作,因此转储和用户事务可并发执行
      3)海量转存:指每次转储全部数据
      4)增量转存:每次只转储上次转储后更新过的数据
      5)日志文件:在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件,每条记录主要内容包括执行操作的事务标识、操作类型、更新前的数据旧值、更新后的数据值、更新日期和时间。一旦发生故障,数据库的恢复子系统可以利用日志文件撤销食物对数据库的改变,回退到事务的初识状态。
      6)数据库镜像:为了避免磁盘介质出现故障影响数据库的可用性,许多DBMS提供数据库镜像功能用于数据库恢复。

    数据库恢复

    • 数据恢复的基本原理是冗余
    • 故障恢复的两个操作
      1)撤销事务(UNDO):将未完成的事务撤销,使数据库恢复到事务执行前的正确状态

    撤销事务的过程:
    1)由后往前扫描找到未完成的事务日志,查找事务的更新操作
    2)对该事务的更新操作执行逆操作,用日志文件记录中更新前的值写入数据库,插入的记录从数据库中删除,删除的记录重新插入数据库,
    3)继续反向扫描日志文件,查找该事务的其他更新操作,并执行逆操作直至事务开始标识
    2)重做事务(REDO):将已提交的事务重新执行
    重做事务的过程:
    从事务的开始标识起,正向扫描日志文件,重新执行日志文件登记的该事务的所有对数据库的操作,直至事务结束标记

    对于不同的故障,采用不同的恢复策略:

    • 事务故障的恢复:
      1)事务故障定义(事务异常终止):由于程序执行错误而引起食物非预期、异常终止的事务。常见为逻辑错误,如非法输入、找不到数据、溢出等;系统错误,系统进入不良状态如死锁导致事务无法执行。事务故障主要靠数据库自己进行故障恢复,要在不影响其他事务运行情况下,强行回滚该事务,这类恢复操作成为事务撤销(UNDO)。
      2)事务故障恢复:事务故障是事务执行到至终点前异常结束,日志文件中只有开始标识,因此需要执行撤销事务操作进行恢复。事务故障的恢复是由系统自动完成的,对用户透明。
      步骤1:反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作
      步骤2:对事务的更新操作执行逆操作
      步骤3:继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到食物的开始标志

    • 系统故障(内存中数据丢失)的恢复:
      1)系统故障的定义:指硬件、软件的漏洞影响,导致丢失内存中的信息,影响正在执行的事务,但并未破坏外存上的信息,这种成为故障-停止假设(fail-stop assumption)。系统故障终止了事务的执行过程,破坏了事务的原子性,由于缓冲中的部分数据可能已经写入数据库,系统重启后数据库可能处于不一致状态
      2)系统故障恢复:系统故障的原因有两个,一是未完成的事务对数据库的更新可能已经写入数据库,而是已提交的事务对数据库的更新可能还在缓冲区中未写入数据库,因此需要对未完成的事务执行撤销事务操作,重做已提交事务

    • 介质故障的恢复:
      1)介质故障定义:指数据库的存储介质发生故障,如磁盘损坏、瞬间强磁场干扰等,这种故障直接破坏了数据库,会影响所有正在读取这部分数据的事务。
      2)介质故障恢复:介质故障时数据库遭到破坏,需要重装数据库,装载故障前最近一次的备份和故障前的日志文件副本,在按照系统故障的恢复过程执行撤销和重做来恢复。

    数据库的安全性与完整性

    相关文章

      网友评论

          本文标题:【软考中级数据库】【知识点整理】事务管理

          本文链接:https://www.haomeiwen.com/subject/hivdzdtx.html