故障恢复+并发控制

事务:用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

ACID特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持续性(Durability)。

ACID特性:https://www.cnblogs.com/melody210218/p/7120559.html

隔离级别:https://www.cnblogs.com/WJ-163/p/6023054.html

故障种类:事务内部故障、系统故障、介质故障、计算机病毒。

恢复机制关注两个问题:

1)如何建立冗余数据。

2)如何利用这些冗余数据实施数据库恢复。

建立冗余数据:

1)数据转储:DBA定期将整个数据库复制到磁带或另一个磁盘上保存。

 静态转储:在系统中无运行事务时进行转储。即转储操作开始时,数据库处于一致性状态,而转储期间不允许对数据库进行任何存取、修改。

动态转储:转储期间允许对数据库进行存取、修改。需要把转储期间各事务对数据库的修改活动登记下来,建立日志文件。

海量转储:每次转储全部数据库。

增量转储:每次只转储上一次转储后更新过的数据。

2)登记日志文件

遵循两条原则:

A.登记的次序严格按并发事务执行的时间顺序。

B.必须先写日志文件,后写数据库。

恢复策略:

(1)事务故障的恢复

事务故障指事务在运行至正常终止点前被终止。

恢复子系统利用日志文件撤销此事务已对数据库进行的修改,由系统自动完成,对用户透明。

(2)系统故障的恢复

系统故障指未完成事务对数据库的更新可能已写入数据库或已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。

恢复操作是要撤销故障发生时未完成的事务,重做已完成的事务。由系统重启时自动完成,不需用户干预。

(3)介质故障的恢复

介质故障指磁盘上的物理数据和日志文件被破坏。

恢复方法是重装数据库,然后重做已完成的事务。

具有检查点的恢复技术:

利用日志技术恢复数据库时,恢复子系统需要搜索日志,确定哪些需要REDO,哪些需要UNDO。耗费时间,且重做了REDO。

检查点的恢复技术:在日志文件中增加检查点记录。内容共包括:建立检查点时刻所有正在执行的事务清单;这些事务最近一个日志记录的地址。

数据库镜像:

DBA周期性的转储数据库,负担重。

数据库镜像:每当数据库更新时,自动把整个数据库或关键数据复制到另一个磁盘上。

三种数据不一致性:

(1)丢失修改

两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。

(2)不可重复读

指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。

(3)读“脏”数据

指事务T1修改某一数据,并将其写会磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。

并发控制的三种方式:封锁,时间戳,乐观控制法。

写锁:加写锁后,不能再加读锁和写锁。

读锁:加读锁后,不能再加写锁,可以加读锁。

加锁解决上面的数据不一致问题:

可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次串行地执行这些事务时的结果相同。一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。

两段锁协议:所有事务必须分两个阶段对数据加锁和解锁。

1)在对任何数据进行读写操作之前,首先需要申请并获得对该数据的封锁。

2)在释放一个封锁之后,事务不再申请和获得任何其他封锁。

原文地址:https://www.cnblogs.com/cing/p/9257575.html