发布时间:2026/7/29 11:19:53
达梦数据库体系结构 达梦数据库的单节点单机架构是最基础的部署形态即一个数据库实例对应一个数据库。 为了应对高并发、高可用等复杂场景达梦也提供了如达梦数据共享集群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

相关新闻

2026/7/29 11:14:52

Mac Mouse Fix:重新定义macOS鼠标工作流的技术解决方案

Mac Mouse Fix:重新定义macOS鼠标工作流的技术解决方案 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix是一款开源的m…

2026/7/29 11:14:52

魔兽争霸3优化插件WarcraftHelper:让你的经典游戏焕发新生

魔兽争霸3优化插件WarcraftHelper:让你的经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为一代经典RTS游戏&…

2026/7/29 12:19:56

为什么跟着飞橙教育能看到商业增长新机遇?

很多企业做新媒体、拓AI新赛道,最大的误区是:只会跟风做流量,不会顺势抓周期。大环境波动下,多数生意增长放缓,但总有逆势突围的赛道。真正的商业增长,从来不是靠运气跟风,而是靠看懂周期、吃透…

2026/7/29 12:19:56

警惕“发票陷阱”:企业如何防范伪装成发票的高级钓鱼攻击

1. 项目概述:当“发票”成为攻击的敲门砖最近在和一些做安全运营的朋友聊天时,发现一个挺有意思的现象:大家对于传统的钓鱼邮件,比如伪装成“银行账户异常”、“中奖通知”的,警惕性已经很高了。但有一种钓鱼攻击&…

2026/7/29 12:19:56

递归函数---汉诺塔问题

递归函数的关键在于第n项问题与第n-1项问题的关系在哪先以能够说明问题的三圆盘汉诺塔为例子最终目的是将三个圆盘全部挪到第三根柱子(第二根也行,此时这两根空柱子是等价的) 由于大圆盘必须在下面,可以得到的首要目标是把三号盘放…

2026/7/29 12:19:56

C语言核心:从内存管理到项目实战的深度指南

1. 从“Hello, World!”到系统核心:为什么C语言依然值得你投入?如果你刚刚接触编程,或者是从Python、Java这类更现代的语言转过来,第一次看到C语言的代码,可能会觉得它有点“土”。没有华丽的面向对象语法,…

2026/7/29 12:19:56

Linux C/C++程序栈溢出检测:从stack smashing错误到安全编程实践

1. 问题现象与核心概念解析 “stack smashing detected”这个错误信息,对于任何一个在Linux环境下进行C/C开发的程序员来说,都像是一个老朋友——一个你绝对不想在深夜调试时见到的“老朋友”。它通常伴随着程序崩溃、进程终止,并留下一个神秘…

2026/7/29 12:14:56

基于Matlab的车牌识别系统开发与优化实践

1. 项目概述:车牌识别系统的核心价值与应用场景车牌识别系统作为智能交通领域的基础组件,已经广泛应用于高速公路收费站、停车场管理、城市道路监控等场景。这个基于Matlab开发的解决方案特别针对中小型项目需求,集成了多图批量处理、倾斜矫正…

2026/7/28 13:41:25

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/29 0:02:56

商标注册找代理还是自己办?算清这笔“时间账”和“风险账

商标注册,找代理还是自己办?帮你算清这笔“时间账”和“风险账”“商标注册,找代理还是自己办?”这是深圳每个创业者都会遇到的灵魂拷问。有人说找代理是花冤枉钱,有人说自己办风险太高。到底哪种更划算?本…

2026/7/29 0:02:56

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案 【免费下载链接】openrpa Free Open Source Enterprise Grade RPA 项目地址: https://gitcode.com/gh_mirrors/op/openrpa 你是否厌倦了每天重复枯燥的数据录入和报表整理工作?是否希望有…

2026/7/29 0:02:56

KMS智能激活工具:一站式解决Windows和Office激活难题

KMS智能激活工具:一站式解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统弹出激活提示而烦恼吗?KMS智能激活工具能够帮你彻底告别W…

2026/7/28 4:38:09

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…