2.达梦文件结构
2.1库文件整体结构
达梦库文件整体结构如图2.1所示
图2.1 达梦文件结构图
主控制文件:指dm01.ctl和dm02.ctl。主要记录系统初始化信息(页大小,簇大小,是否大小写敏感,是否使用Unicode等)和系统中库的控制文件路径。
库控制文件:指system01.ctl和system02.ctl。主要记录库的基本信息(库名,归档目录,备份目录等)和文件组信息。
DBF和ROL文件:采取统一的存储格式,按建库时的页大小,分页存储,页号连续,每个页头上都有一个标识页被修改的LSN。
LOG文件:采用独立的页大小,一般为512字节,16兆作为一个逻辑上的文件。在写日志的过程中,逻辑文件号不断增大。LSN则根据文件号,页号,页偏移计算得来的,单调递增。
2.2回滚文件结构
回滚文件是按回滚段组织的。一个事务在一个库上进行更新操作,则在该库上建立其对应的回滚段。回滚段是用来记录事务逻辑操作的页集合。回滚段中记录回滚记录以及回滚段的状态。结合回滚段的状态和回滚记录就能实现事务回滚,将数据库恢复到事务开始时的状态。
(1)回滚记录
回滚记录也就是UNDO日志,记录的是对一行(row)操作的前映像值。回滚记录是明确的逻辑意义的。
记录的格式如下:
a)类型:插入、修改或删除
b)数据库ID
c)表ID
d)表的列数
e)被更新的列ID数组
f)元组数据:对插入是插入的新值,对修改和删除是旧值
g)时间戳:供事务用
事务对数据库的插入、修改和删除,首先生成回滚记录,反映到回滚文件上,然后事务的操作才会反映到数据文件上。
(2)回滚段的状态
常见的回滚段状态有:
a)TRX_NOT_START:事务还未开始
b)TRX_ACTIVE:活动事务
c)TRX_COMMITING:正在提交
d)TRX_ROLLING:正在回滚
e)TRX_COMMITTED:已提交
f)TRX_ROLLBACKED:已回滚