暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库体系结构--物理存储结构

原创 2021-09-15
1168

DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。

典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等。

图片.png

1、控制文件

每个 DM 数据库都有一个名为 dm.ctl 的控制文件。

控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容
····数据库名称;
····数据库服务器模式;
····OGUID 唯一标识;
····数据库服务器版本;
····数据文件版本;
····数据库的启动次数;
····数据库最后一次启动时间;
····表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
····控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。

在数据库服务器运行期间,执行表空间的 DDL 等操作后,数据库服务器内部需要同步修改控制文件内容。
如果在修改过程中服务器故障,可能会导致控制文件损坏,为了避免出现这种情况,在修改控制文件时系统内部会执行备份操作。

控制文件的备份策略如下
策略一 在修改 dm.ctl 之前,先执行一次备份,确定 dm.ctl 修改成功后,再将备份删除,如果 dm.ctl 修改失败或中途故障,则保留备份文件。
策略二 在修改 dm.ctl 成功之后,根据 dm.ini 中指定的 CTL_BAK_PATH/CTL_BAK_NUM 对最新的 dm.ctl 执行备份。
如果用户指定的 CTL_BAK_PATH 是非法路径,则不再生成备份文件,在路径有效的情况下,生成备份文件时根据指定的 CTL_BAK_NUM 判断是否删除老的备份文件。

注意
····如果 dm.ctl 文件存放在裸设备上,则策略一不会生效。
····如果指定的 CTL_BAK_PATH 是无效路径,则策略二也不会生效。
····如果策略一和策略二的条件都满足,则都会生效执行,否则只执行满足条件的备份策略,如果都不满足,则不会再生成备份文件。
····如果是初始化新库,在初始化完成后,会在“SYSTEM_PATH/CTL_BAK”路径下对原始的 dm.ctl 执行一次备份。

2、数据文件

数据文件以 dbf 为扩展名。
数据文件是数据库中最重要的文件类型,一个 DM 数据文件对应磁盘上的一个物理文件或达梦分布式数据库中的一个逻辑文件,数据文件是真实数据存储的地方,每个达梦数据库至少有一个与之相关的数据文件。

当 DM 数据库的数据文件空间用完时,它可以自动扩展。
可以在创建数据文件是通过 MAXSIZE 参数限制数据文件的扩展量。
数据文件的大小也会受物理磁盘大小的限制。
实际应用中,一般不建议使用单个巨大的数据文件,为一个表空间创建多个较小的数据文件是更好的选择。

数据文件按数据组织形式,可以分为如下几种
1)B 树数据
行存储数据,也是应用最广泛的存储形式。
其数据是按 B 数索引组织的。
普通表、分区表、B 树索引的物理存储格式都是 B 树。

一个 B 树包含两个段,一个内节点段,存放内节点数据;一个叶子段,存放叶子节点数据。
其 B 树的逻辑关系由段内页面上的记录,通过文件指针来完成。

当表上没有指定聚簇索引时,系统会自动产生一个唯一标识 rowid 作为 B 树的 key 来唯一标识一行。

2)堆表数据
堆表的数据是以挂链形式存储的,一般情况下,支持最多 128 个链表。
一个链表在物理上就是一个段,堆表采用的是物理 rowid,在插入过程中,rowid 在事先已确定,并保证其唯一性,所以可以并发插入,插入效率很高。
由于物理 rowid 是即时生成,无需保存在物理磁盘上,也节省了空间。

3)列存储数据
数据按列方式组织存储,每个列包含2个段,一个段存储列数据,一个段存放列的控制信息,读取列数据时,只需要顺序扫描这两个段。
在某些特殊应用场景下,其效率要远远高于行存储。

4)位图索引
位图索引与 B 树索引不同,每个索引条目不是指向一行数据,而是指向多行数据。
每个索引项保存的是一定范围内所有行与当前索引键值映射关系的位图。

数据文件中还有两类特殊的数据文件:ROLL 和 TEMP 文件。
1)ROLL文件
ROLL 表空间的 dbf 文件,称为 ROLL 文件。
ROLL 文件用于保存系统的回滚记录,提供事务回滚时的信息。
回滚文件整个是一个段。
每个事务的回滚页在回滚段中各自挂链,页内则顺序存放回滚记录。

2)TEMP文件
TEMP.DBF 临时数据文件,临时数据文件可以在 dm.ini 中通过 TEMP_SIZE 配置大小。
当数据库查询的临时结果集过大,缓存已经不够用时,临时结果集就可以保存在 TEMP.DBF 文件中,供后续运输使用。

3、重做日志文件

重做日志(REDO日志)指在 DM 数据库中添加、删除、修改对象,或改变数据,DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。
重做日志文件以 log 为扩展名。
每个 DM 数据库实例必须至少有2个重做日志文件,默认两个日志文件为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。
重做日志文件也称为联机日志文件。

重做日志文件主要用于数据库的备份与恢复。
重做日志文件用于存储数据库的事务日志,以便系统在出现系统故障和介质故障时能进行故障恢复。

4、归档日志文件

日志文件分为联机日志文件和归档日志文件。
在归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。
归档日志文件以归档时间命名,扩展名也是 log。
采用归档模式会对系统性能产生影响,但系统在归档模式下运行会更安全。

5、配置文件

配置文件是 DM 数据库用来设置功能选项的一些文本文件的集合,配置文件以 ini 为扩展名,它们具有固定的格式。

用户可以通过修改配置文件中的某些参数值来达到如下两个方面的目标
····启用/禁用特定功能项
····针对当前系统运行环境设置更优的参数值以提升系统性能

dm.ini
每创建一个 DM 数据库,就会自动生成 dm.ini 文件。
dm.ini 文件是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项。

dmmal.ini
dmmal.ini 是 MAL 系统的配置文件。
需要用到 MAL 环境的实例,所有站点的 dmmal.ini 需要保证验证一致。

dmarch.ini
dmarch.ini 用于本地归档和远程归档的配置。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论