Skip to content

DM-基础架构

官网:https://www.dameng.com/

达梦数据库(DM Database)是中国自主研发的高性能关系型数据库管理系统,由武汉达梦数据库股份有限公司研发并推广。作为国产数据库的领军企业,达梦数据库坚持完全自主创新的技术路线,拥有全部核心源代码的自主知识产权,代码自主原创率达99.9%,在金融、党政、能源、电信等关键行业核心系统中广泛应用,打破了国外数据库产品在中国市场的垄断地位。

技术优势

  • 高可靠性:采用多版本并发控制机制,完善的故障恢复机制确保数据安全
  • 高性能:支持海量数据高速读写,处理能力达100TB以上,通过了100TB数据库容量测试
  • 高安全性:达到国产数据库最高安全级别(EAL4级认证、国家安全四级认证),支持数据加密、访问控制、审计等功能
  • 高兼容性:兼容SQL92/SQL99及部分SQL2003标准,支持PL/SQL,兼容Oracle、MySQL等主流数据库,降低迁移门槛
  • 分布式架构:支持自动分片、数据分布式存储和计算,适应云服务需求

全栈数据产品生态

  1. 关系型数据库:达梦数据管理系统(DM8等版本),支持超大规模并发事务处理
  2. 集群解决方案
    • 达梦数据共享集群(DMDSC):8节点共享存储集群,国内首创,全球第二家实现该技术的企业
    • 读写分离集群、分布式事务处理集群、大规模并行集群
  3. 非关系型数据库
    • 图数据库(蜀天梦GDM)
    • 缓存数据库
    • 时序数据库
    • 文档数据库
  4. 云数据库:启云数据库(DMCDB),支持弹性扩缩容
  5. 大数据平台:整合数据采集交换、存储计算、治理分析全流程

架构原理

达梦数据库(DM Database)作为国产数据库的领军产品,其架构设计融合了传统关系型数据库的优势与自主创新技术,形成了独特的体系结构。本文将全面剖析达梦数据库的架构原理,从逻辑存储、物理存储、内存管理和线程模型四个核心维度进行深入解读,并对比分析其与主流数据库的技术差异。

逻辑存储结构

达梦数据库采用经典的分层逻辑存储结构,形成"数据库→表空间→段→簇→页→记录"的多级管理体系,这种设计既保证了数据管理的灵活性,又优化了存储效率。

表空间(Tablespace)

表空间是达梦数据库最高级别的逻辑存储单元,一个数据库由多个表空间组成。达梦数据库包含以下几类关键表空间:

  • SYSTEM表空间:存储数据字典、系统表等元数据,由数据库自动维护,用户不可修改
  • MAIN表空间:默认用户表空间,存储普通用户数据,支持动态扩展数据文件
  • TEMP表空间:存放排序、哈希等操作的中间结果,由系统自动管理
  • ROLL表空间:记录事务修改前的数据镜像,保障事务回滚和读一致性
  • HMAIN表空间:专用于HUGE表(列存储)的默认存储空间

达梦创新性地支持混合表空间,允许普通表与HUGE表共存于同一表空间,通过为普通表空间增加HUGE数据文件路径即可升级为混合表空间。

段(Segment)

段是表空间内分配的对象存储空间,主要分为:

  • 数据段:存储表数据,采用B树或堆表组织形式
  • 索引段:存储索引数据,支持B树、位图等多种索引类型
  • 回滚段:记录事务回滚信息,存储在ROLL表空间
  • 临时段:SQL执行过程中产生的临时工作区

达梦支持延迟段分配技术,通过参数DEFERRED_SEGMENT_CREATION控制,创建表时不立即分配存储空间,直到首次插入数据时才分配,有效减少空表的空间占用。

簇(Extent)与页(Page)

  • :由同一数据文件中16/32/64个连续页组成(默认16页),大小在创建数据库时确定且不可修改。例如页大小为8KB时,每个簇为128KB
  • :最小I/O单元,默认8KB(可配置为4KB/16KB/32KB),包含页头、数据区、空闲空间和行偏移数组四部分

达梦通过FILLFACTOR参数控制页的填充率(默认100%),在空间利用与更新性能间取得平衡——低填充率可减少页分裂但增加空间占用。

物理存储结构

达梦数据库的物理存储由多类精心设计的文件协同工作,确保数据安全与高性能访问。

核心文件类型

文件类型扩展名功能特点关键参数
控制文件.CTL记录数据库全局状态(表空间映射、检查点等),采用双备份策略防止损坏CTL_BAK_PATH, CTL_BAK_NUM
数据文件.DBF表空间的物理载体,支持动态扩展(初始100MB,增量50MB)INITIAL, NEXT
联机日志.LOG记录事务REDO日志,至少需2组循环写入,建议SSD存储RLOG_BUF_SIZE
归档日志.ARC联机日志的离线副本,支持按时间/大小自动归档ARCH_DEST
配置文件.INI包括dm.ini(核心参数)、dmarch.ini(归档配置)等BUFFER, KEEP

存储创新设计

  • 智能文件扩展:当表空间需要新簇时,按"查找空闲簇→格式化空闲空间→扩展数据文件"的流程自动处理
  • 双日志机制:联机日志保证事务持久性,归档日志实现时间点恢复(PITR)
  • 分离存储策略:建议数据文件与日志文件分开存储,避免I/O争用

内存结构

达梦数据库采用精细化的内存管理策略,通过多级缓冲和智能淘汰算法最大化内存利用率。

共享内存池

区域类型功能关键参数优化建议
数据缓冲区缓存数据页,分NORMAL/KEEP/RECYCLE/FAST四个子池BUFFER=2048(MB)OLTP系统目标命中率>90%
日志缓冲区暂存REDO日志,事务提交时刷盘RLOG_BUF_SIZE=64SSD存储可显著提升性能
SQL缓冲区缓存执行计划,减少硬解析CACHE_POOL_SIZE=100目标硬解析率<5%

会话私有内存

  • 排序区:单会话默认2MB,可扩展至256MB(citation:1]
  • 哈希区:用于连接操作,默认500KB
  • SSD缓冲区:二级缓存,减少机械磁盘访问(citation:1]

达梦独创动态内存调整技术,支持在线调整缓冲池大小,配合基于访问频率的LRU-K算法实现智能缓存淘汰。

线程架构

达梦采用单进程多线程模型,通过专业化线程分工实现高效并发处理。

核心线程组及其协作流程

mermaid
graph TB
    A[监听线程 dm_lsnr_thd] -->|创建会话| B[会话线程 dm_sql_thd]
    B -->|SQL请求| C[工作线程 dm_tskwrk_thd]
    C -->|数据访问| D[IO线程 dm_io_thd]
    D -->|缓存未命中| E[磁盘I/O]
    C -->|事务提交| F[日志线程 dm_redolog_thd]
    F --> G[联机日志]
    G -->|归档触发| H[归档线程 dm_rsyswrk_thd]
    I[调度线程 dm_sched_thd] --> J[自动维护任务]

关键线程功能

  1. 监听线程:绑定5236端口,接收客户端连接并创建专属会话线程
  2. 工作线程:默认16个(可配置),处理SQL全流程:解析→权限校验→生成执行计划→数据读写
  3. IO线程:处理物理读写,通过V$FILESTAT监控I/O延迟
  4. 日志线程组
    • 日志刷新线程:同步/异步刷REDO日志(RLOG_SYNC_FLUSH=0)
    • 归档线程:实时归档(ARCH_SEND_THRESHOLD=65536)
  5. 调度线程:每秒执行自动维护任务,包括:
    • 缓存清理(MAX_CACHE_SIZE=1000)
    • 缓冲池动态扩展(BUFFER_EXTEND_SIZE=256)
    • 检查点触发(CHECKPOINT_INTERVAL=1800秒)

与主流数据库的架构对比

达梦数据库在兼容Oracle架构的同时,也融入了多项自主创新技术:

架构特性OracleMySQL(InnoDB)达梦DM
存储引擎表空间+回滚段插件式引擎双存储引擎(行存+列存)
内存管理SGA+PGABuffer Pool多级缓冲池+动态调整
并发控制多进程架构多线程架构混合架构(进程+线程)
高可用方案Data Guard主从复制DMRAC集群+DSC共享存储
安全模型自定义三权单一管理员三权分立(SYSDBA/SYSSSO/SYSAUDITOR)

达梦特有的DSC共享存储集群技术实现了多活架构,关键技术包括:

  • 基于RDMA的缓存融合
  • 全局锁表(GLT)机制
  • 仲裁服务防脑裂