关于 informix 的逻辑日志和物理日志
informix 系统中还有物理日志和逻辑日志两种非常重要的磁盘构件。
1.物理日志(physical log)由一片连续的磁盘空间。其主要目的是为系统进行快速恢复提供原始数据映像。物
理日志以页为单位进行分配和释放,它所存储的内容被称为 before images(顾名思义,数据原来的面貌即修
改前数据映像)。当共享内存中的某个页要被修改之前(第一次被修改),系统先将其修改前数据映像
(before images)放到物理日志中保存起来。这样,在用户的整个操作完全成功以前,他所修改的所有数据
页的修改前映像都被保存着,一旦出现问题,系统可以根据物理日志中的 before images 进行快速恢复。需要
注意的是,只在数据页第一次被修改以前其 before image 才会被保存,在 before image 被写入以后和其被释
放之前的这一段过程中,所有对该页进行的修改都不再写 before image 了。当用户写该页这个操作对应的逻辑
日志被释放时,其 before image 也就可以释放了。
逻辑日志(logical logs)是由若干块独立的磁盘空间构成,每一块都是连续的磁盘空间。一个 Informix
Dynamic Server 系统的逻辑日志块数至少要有三块,最大数据可以由管理员配置(不能超过 32767 块)。
记逻辑日志的目的是将对系统的每个操作、每个修改都保存起来,以便系统出现问题的时候可以根据其内容进行
重做(REDO)或事务不能继续进行下去的时候进行回滚(UNDO)。逻辑日志记录的内容主要包括事务的每一
步操作机器对系统产生的影响、DDL 语句和检查点(checkpoint)记录。
系统循环地使用各个逻辑日志块来记录日志,所以各个逻辑日志块只有逻辑次序上的先后而没有物理意义上的先
后。由于逻辑日志块是循环使用的,它必然有一个释放的问题,即在何种条件下已使用过的逻辑日志块可以被释
放并被重新使用。可以被释放的逻辑日志块必须符合下述四个方面的条件:
1.如果逻辑日志块中包含活动的事务(即既没有正确结束也没有因错误回滚的事务),则不能被释放。
2.包含最后一个检查点的逻辑日志不能被释放。
3.在逻辑次序上位于包含最后一个检查点的逻辑日志块之后的逻辑日志不能被释放。
4.如果逻辑日志未被备份(backup),则该逻辑日志不能被释放。
在系统初始化时,物理日志和逻辑日志都自动建立在 root dbspace 的第一个 CHUNK 中,它们也可以被存放在
其它的数据空间中,并且 Informix 建议将物理日志和逻辑日志存放在不同的设备上以提高系统的性能。
2.物理日志由系统维护,通常无需维护。
逻辑日志的几种状态:
状态“A”:新增加的逻辑日志。仅当进行 0 级备份后才能使用,其状态变成“F”。
状态“F”:此逻辑日志空闲、可用。
状态“U”:此逻辑日志使用中,未释放(当一日志被 backup 且其上的事务均已关闭时才能被释放)。
状态“B”:此逻辑日志已 backup。
评论0