Informix OnLine磁盘数据结构
1 数据存储概念
1.1 page
page是OnLine的最基本数据存储单位。Online的数据页面包含以下内容:
(1)24个字节的页头(包含4个字节的时间戳(timestamp));
(2)数据区;
(3)槽表(slot table) 每个4字节。页面中的槽表个数存放在页头的一个字节中,所以一个数据页面最多存放255个记录。
(4)时间戳;
1.2 extent
extent是多个物理连续page(最少4个)的组合。数据库表的存储空间分配是以extent为单位的。
1.3tbspace
tbspace是extent的逻辑组合。tbspace由分配给一个表的所有extent组成。一个tbspace只可能在一个dbspace中,但可能跨越多个chunk。
1.4chunk
chunk是分配给OnLine的一块物理存储空间,可以是unix文件,也可以是原始生设备。
1.5dbspace、blobspace
dbspace是chunk的逻辑组合。数据库管理员可以为dbspace创建、增加chunk,从而增加数据库的存储空间。创建dbspace时必须首先指定它的primary chunk。
2 日志(log)
数据库日志是用于维护数据库数据一致性的手段。OnLine的日志分为物理日志(physical log)和逻辑日志(logical log)。物理日志用于维护数据库的物理一致性,在每次修改数据之前,该数据所在的数据页面都将存储在物理日志中,所以物理日志也称为“前镜像”(before images)。逻辑日志用于维护数据库的逻辑一致性,在每次变动数据库时,所有变动情况都将记录在逻辑日志中。物理日志在每次checkpoint之后将被自动清空;逻辑日志必需是已经备份,而且日志中包含的事务都已提交,并且不是最后一个日志文件才能被释放。
长事务指那些尚未结束,但数据库逻辑日志文件已经被事务日志记录充满的事务。这样一来逻辑日志文件既不能被释放重用,同时事务日志记录也写不进逻辑日志文件。这种情况下,Online会阻塞数据库请求,同时“回滚”长事务。