公司动态

达梦数据库体系结构

📅 2026/7/29 11:19:52
达梦数据库体系结构
达梦数据库的单节点单机架构是最基础的部署形态即一个数据库实例对应一个数据库。 为了应对高并发、高可用等复杂场景达梦也提供了如达梦数据共享集群DSC等高级架构。在 DSC 架构中多个数据库实例可以同时访问和管理同一个数据库即多对一。达梦数据库的体系结构可划分为四个紧密关联的层次逻辑存储结构数据的组织逻辑、物理存储结构数据的磁盘存在形式、内存结构数据的运行时载体与线程结构数据的操作执行者。四者协同工作构成完整的数据库管理系统。1.逻辑存储结构逻辑存储结构定义了数据在数据库内部的组织方式其层次关系为数据库→表空间→段→簇→页→记录行1.1 表空间表空间是数据库的逻辑划分是存储数据库对象表、索引等的逻辑容器。一个数据库由多个表空间组成。表空间类型用途说明特性SYSTEM存储数据字典信息系统必需TEMP存储临时表与临时数据用于排序、哈希等操作ROLL存储回滚段保证事务一致性MAIN默认用户表空间混合表空间可存普通表与HUGE表RLOG日志表空间存储重做日志文件用户自定义按业务需求创建支持数据隔离与性能优化普通表空间不能存储HUGE表。混合表空间可同时存储普通表和HUGE表通过为普通表空间增加HUGE数据文件路径进行升级。1.2 段段是表空间内为特定数据库对象分配的存储空间集合。段类型存储对象数据段表数据索引段索引数据回滚段事务回滚信息临时段临时工作区延迟段分配通过设置DEFERRED_SEGMENT_CREATION1开启。创建表/索引。时暂不分配空间直至首次插入数据时才申请。可有效减少空分区表占用的空间。1.3簇簇是数据页的上级逻辑单元由同一数据文件中连续的数据页组成。页大小每簇页数簇容量4KB16/32/64—8KB16页128KB16KB16页256KB32KB8页256KB簇的大小在数据库创建后不可更改。创建表/索引时至少分配1个簇空间用完后自动扩展。删除记录时释放空闲簇DROP对象时回收全部簇。1.4 页页是 DM 数据库中最小的数据存储单元同时也是磁盘 I/O 操作的最小单位。默认大小8KB可选4KB、8KB、16KB、32KB页类型数据页、索引页、回滚页、位图页等页的组成1.5 记录默认情况下建议单条记录长度不超过页大小的一半PAGE_SIZE/2否则可能触发行迁移或行链接影响性能。记录是表中的逻辑单元并非数据库的存储单位页才是真正的存储单位。2.物理存储结构物理存储结构描述了数据在磁盘上的具体文件组织形式。2.1 配置文件.ini配置文件是以.ini为扩展名的文本文件用于启用/禁用功能及调优性能。服务端配置文件文件名用途dm.ini主配置文件含内存、线程、缓冲区等核心参数参数属性手动/静态/动态dmarch.ini归档配置文件dmmal.iniMAL系统配置用于分布式/DSC环境sqllog.ini通过sqllog.ini进行更精细的过滤和格式配置dmthrd.ini线程与CPU核心绑定配置dmtimer.ini定时器配置用于异步备库或复制客户端配置文件文件名用途dm_svc.conf服务名解析配置文件2.2 控制文件.ctl控制文件为二进制文件记录数据库的物理结构与运行状态。控制文件记录内容dm.ctl数据库名称、服务器模式、OGUID、版本、表空间及数据文件路径、启动次数、校验码等dmtemp.ctl临时表空间名及物理文件路径备份策略为防止修改控制文件时系统故障导致损坏系统自动执行双策略备份。2.3 数据文件.dbf数据文件是存储实际数据的物理文件每个表空间对应一个或多个数据文件。组织方式特点B树数据行存储按B树索引组织包含内节点段和叶子段最广泛应用堆表数据堆表采用无索引组织方式数据按插入顺序存储适合批量插入、少更新、全表扫描的OLAP场景。列存储数据顺序扫描列数据文件和辅助表数据适合OLAP场景位图索引每个索引项保存范围内所有行与键值映射的位图特殊数据文件ROLL文件ROLL表空间的DBF文件保存回滚记录TEMP文件临时数据文件TEMP.DBF通过TEMP_SIZE配置大小2.4 重做日志文件.log记录数据库的所有修改操作是事务持久性与故障恢复的基石。每个实例至少2个日志文件默认DAMENG01.log、DAMENG02.log循环写入机制日志扩展名可在初始化时通过RLOG_POSTFIX_NAME指定2.5归档日志文件.arc归档日志是已满重做日志文件的历史副本用于时间点恢复PITR与数据库复制。2.6 物理逻辑日志文件按特定格式存储服务器的逻辑操作专门用于DBMS_LOGMNR包挖掘历史执行语句。2.7备份文件.bak数据库备份文件包括全量备份、增量备份、差异备份非联机必需文件。2.8 SQL日志文件纯文本文件记录各会话执行的SQL语句、参数及错误信息用于性能分析与故障排查。2.9 事件日志文件达梦数据库在运行过程中会生成运行日志dm_实例名_YYYYMMDD.log它主要用于记录数据库启动、关闭、检查点、备份、恢复、错误、警告等关键操作和异常事件。当数据库发生严重错误或性能问题时管理员可以通过分析事件日志文件来快速定位问题根源。事件日志文件会随着数据库服务的运行持续生成和更新是数据库运维和故障排查的重要依据。通常建议定期归档和清理旧的事件日志文件以避免占用过多磁盘空间。3.内存结构3.1 内存池内存池类型说明共享内存池DM Server启动时从OS申请的大片内存供各组件共享使用运行时内存池各功能模块独立申请的内存池如会话内存池、虚拟机内存池内存功能区分内存区用途排序区处理ORDER BY、GROUP BY等排序操作哈希区处理哈希连接Hash Join操作会话堆栈存储会话变量、游标状态等私有信息大对象缓存缓存CLOB/BLOB大字段数据3.2 缓冲区缓冲区功能关键参数数据缓冲区缓存数据文件中的数据页通过自由链、LRU链、脏链三条链表管理BUFFER日志缓冲区缓存重做日志记录批量写入磁盘RLOG_BUF_SIZE字典缓冲区缓存模式、表、列、触发器等信息DICT_BUF_SIZE默认5MBSQL缓冲区缓存SQL执行计划CACHE_POOL_SIZE数据缓冲区类型NORMAL、KEEP、FAST、RECYCLE3.3 排序区排序区是 DM 数据库为排序操作如 ORDER BY、GROUP BY、DISTINCT 等专门分配的内存区域。当 SQL 查询需要进行排序时数据库会优先使用排序区来存储排序过程中的中间数据从而避免频繁的磁盘 I/O 操作显著提升排序性能。排序区的大小可以通过参数 SORT_BUF_SIZE 进行配置如果排序数据量超过排序区容量系统会自动使用临时表空间进行磁盘排序但这会带来性能下降。合理配置排序区大小对于优化包含大量排序操作的查询至关重要。3.4 哈希区为哈希连接操作提供专用内存空间。4.线程结构DM服务器采用单进程、多线程的“对称服务器架构”。线程名称核心职责监听线程监听客户端连接请求通常只有一个工作线程处理各类任务及实际数据操作含任务/会话工作线程采用线程池管理I/O线程负责数据文件、日志文件、归档日志的读写最耗时线程调度线程接管所有需要定时调度的任务每秒轮询一次日志FLUSH线程在事务提交或检查点时将REDO日志从缓冲区刷入磁盘必须早于数据页刷盘日志归档线程管理归档日志文件的写入日志APPLY线程应用于重做日志恢复定时器线程管理定时任务MAL系统线程基于TCP/IP实现DM内部高速通信达梦社区地址https://eco.dameng.com