第7章事务管理恢复——保证事务在并发执行时满足ACID准则的技术.
并发控制——保证事务在并发执行时满足ACID准则的技术.
事务管理(transactionmanagement):7.
1恢复引论故障的可能性总是存在的.
解决故障的措施有二:一是尽可能提高可靠性;二是恢复.
这里主要讨论发生故障后,恢复数据库至一致状态的技术,即恢复技术.
系统发生故障时,可能会导致数据的丢失(loss),要恢复丢失的数据,必须有后备副本.
对于恢复,数据冗余是必需的!
一致状态1.
单纯以后备副本为基础的恢复技术2.
以后备副本和运行记录为基础的恢复3.
基于多副本的恢复技术恢复技术大致可以分为下列三种1.
单纯以后备副本为基础的恢复技术从文件系统继承而来,周期性的把磁盘上的数据库转储(dump)到脱机存放的磁带上.
失效取后备副本取后备副本取后备副本更新丢失更新丢失取后备副本取后备副本IDIDIDID取后备副本ID失效增量转储(ID)单纯以后备副本为基础的恢复技术:优点:实现简单,不增加数据库正常运行时的开销.
缺点:不能恢复到数据库的最近一致的状态.
多用于文件系统以及小型的不重要的数据库系统.
2.
以后备副本和运行记录为基础的恢复运行记录(log或journal)由系统维护,一般包括下列内容:(1)前像(BeforeImage,BI)当数据库被一个事务更新时,所涉及的物理块更新前的映像(image)称为该事务的前像(BI),前像以物理块为单位;有了前像可以使数据库恢复到更新前状态,对应操作undo(撤销).
(2)后像(AfterImage,AI)当数据库被一个事务更新时,所涉及的物理块更新后的映像(image)称为该事务的后像(AI),后像也以物理块为单位;有了后像,即便更新的数据丢失了,仍然可以使数据库恢复到更新后的状态,相当于重做一次更新,对应操作redo(重做).
问题:前像(BI)、后像(AI)和事务操作的关系修改——有前像有后像插入——没前像有后像删除——有前像没后像(3)事务状态记录每个事务的状态,以便在恢复时作不同的处理(COMMIT和NOTCOMMIT).
事务失败事务开始活动状态操作结束事务提交回卷事务结束提交(Commit)——成功执行(doall).
回卷(Rollback或Abort)——消除事务对数据库的影响(donothing)对恢复而言,至少要区分一个事务是否提交!
实现方法最近后备副本运行记录失效最近后备副本运行记录基于后备副本与运行记录的恢复如上图所示,当数据库失效时,取出最近后备副本,然后根据运行记录,对未提交的事务用前像卷回——向后恢复(backwardrecovery);对已提交的事务,必要时用后像重做——向前恢复(forwardrecovery).
这种恢复技术,需保持运行记录,这将会影响数据库的正常工作速度,但可以使数据库恢复到最近一致状态.
大多数商品化DBMS采用这种恢复技术.
3.
基于多副本的恢复技术如果系统中有多个DB副本,且这些副本具有独立的失效模式(independentfailuremode),则可利用这些副本互为备份,用于恢复.
此技术在分布式数据库系统中应用的较多.
近年来,由于硬件价格的下降,也采用镜像磁盘(mirroreddisks)技术.
写数据时,两个磁盘都写入同样的内容.
当一个磁盘的数据丢失时,可以用另一个磁盘的数据来恢复.
(两盘同时故障的概率可以假设为零!
)磁盘1磁盘2控制器1控制器2CPU1CPU2镜像磁盘系统下面主要讨论第二种恢复技术.
7.
2运行记录的结构运行记录的存储要避免与数据库"全军覆没".
运行记录(log)一般不能和数据库放在同一磁盘上,以免两者皆失.
(假设log和DBMS同时失效的概率为零;一般假设log不会损坏,若运行中DBMS测得log损坏,则采取强制措施,例如拒绝新事务,完成已提交事务,停止运行,修复log).
运行记录的结构因DBMS而异Log基本内容1.
活动事务表(activetransactionlist---ATL)记录所有正在执行,尚未提交的事务的标识符(transactionidentifier---TID).
2.
提交事务表(committedtransactionlist---CTL)记录所有已提交事务的标识符.
注意:提交时,先将要提交事务的TID加入CTL,再从ATL中删除相应的TID.
否则,一旦发生故障,该事务的状态将丢失!
问题:某事务需要提交时,该按照什么顺序对ATL和CTL进行更新3.
前像文件可以看成一个堆文件.
每个物理块有个块标识符BID(blockidentifier).
BID由TID、关系名和逻辑块号组成.
逻辑块号在关系中是唯一的.
如果一个事务需要卷回,可以在前像文件中找出该事务的所有前像块,按照逻辑块号写入到关系的对应块,从而消除该事务对数据库的影响.
今天下午遇到一个网友聊到他昨天新注册的一个域名,今天在去使用的时候发现域名居然不见。开始怀疑他昨天是否付款扣费,以及是否有实名认证过,毕竟我们在国内域名注册平台注册域名是需要实名认证的,大概3-5天内如果不验证那是不可以使用的。但是如果注册完毕的域名找不到那也是奇怪。同时我也有怀疑他是不是忘记记错账户。毕竟我们有很多朋友在某个商家注册很多账户,有时候自己都忘记是用哪个账户的。但是我们去找账户也不办...
sharktech怎么样?sharktech (鲨鱼机房)是一家成立于 2003 年的知名美国老牌主机商,又称鲨鱼机房或者SK 机房,一直主打高防系列产品,提供独立服务器租用业务和 VPS 主机,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹,所有产品均提供 DDoS 防护。此文只整理他们家10Gbps专用服务器,此外该系列所有服务器都受到高达 60Gbps(可升级到 100Gbps)的保护。...
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...