数据库中日记问题详解-入门底子[Oracle防范]
本文“数据库中日记问题详解-入门底子[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
日记是日记记录的一个序列.在多事件的数据库系统中,每个事件有若干个操作步骤.每个日记记录记录有关某个事件已做的某些情形.几个事件的行为可以是"交叉的",因此大概是一个事件的某个步骤被履行,并且其效果被记录到日记中,接着履行别的一个事件的某个步骤并记入日记,接着大概接着做第一事件的下一个步骤,也大概履行别的一个事件的某个步骤.顺次类推.事件的交叉履行使日记更复杂,因为仅在事件完毕后记录事件的全历程是不够的.
假如系统崩溃,恢复管理器就被激活,查抄日记以重建数据库的一致性状况.恢复时,有些事件的工作将会重做,它们写到数据库的新值会重写一次.而别的一些事件的工作将被撤消,数据库被恢复,将仿佛这些事件历来没履行过一样.
Undo日记是日记范例的一种,这类日记仅仅举行第二类修复.关于要被撤消的事件,因为不能必定它对数据库的改正能否已经写到磁盘中,所以关于该事件的全部更新都将被撤消,数据库恢复到事件发生从前的状况.
1.日记记录
日记只答应以附加的方法写入数据.日记块最初在主存中成立,像数据块一样也由缓冲区管理,在的当的时刻,日记块会从缓冲区写入到磁盘.
关于undo记录情势有四种:
1) : 这一记录表示事件T开始
2) : 事件T已经完成.
3) : 事件T不能成功履行.
4) : 事件T改变了数据库元素X的值,元素X本来的值为v.
2.undo日记法则
要想让undo日记能使我们从系统弊端中恢复,事件必须遵守两条法则.
法则1)假如事件T改变了数据库元素X,那么形如的日记记录必须在X的新值写到磁盘前写到磁盘
法则 2)假如事件提交,则其COMMIT日记记录必须在事件改变的全部数据库元素已写到磁盘后再写到磁盘,但应尽快.
简单概括,undo日记系统次序以下:
1) 指明所改变数据库元素的日记记录
2) 改变的数据库元素自身
3) COMMIT日记记录.
3.利用
关于前面所举的例子(A转帐50元给B帐号),假如利用了undo日记系统,则相关的工作流程如表2以下.
我们可以看到FLUSH LOG这个号令.该号令的用于强迫将还没有刷盘日记记录写到磁盘上.关于步骤8履行之前,三个undo记录(,,)是存储在缓冲区中的(这样描写是为将问题简单化),履行步骤8之后,三条undo记录便写入了磁盘日记文件.在步骤12再次履行FLUSH LOG号令时,只将未刷盘的日记记录写入磁盘.
以上是“数据库中日记问题详解-入门底子[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |