达梦数据库体系结构学习

news2026/4/30 4:08:42
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、数据库与实例概念二、DM 逻辑存储结构三、物理存储结构四、内存结构五、线程结构总结前言众所周知信息技术应用创新信创是我国筑牢数字安全屏障、实现核心技术自主可控的国家战略数据库作为数字基础设施的 “核心引擎”是信创工程中替代国外产品、保障数据主权与业务安全的关键环节。在信创浪潮全面深化的当下达梦数据库凭借四十余年100% 根代码自研的技术积淀成为国产数据库领域的领军力量为党政、金融、能源、医疗等关键行业的信创落地提供了坚实支撑一起来学习一下达梦数据库的体系结构吧。一、数据库与实例概念1、数据库与实例概念DM 数据库指的是存储在磁盘上的数据集合包含数据文件、日志文件、控制文件和临时数据文件等。实例指的是在内存中运行的数据库管理进程负责管理这些磁盘上的数据文件。2、数据库它主要包括以下几个部分数据文件.BDF存储数据库的实际数据。日志文件.log记录数据库的事务日志用于恢复数据。控制文件.ctl记录数据库的结构信息和状态信息。临时数据文件用于存储临时数据如排序操作的中间结果。3、实例实例是在内存中的进程/线程负责管理和操作数据库包括系统全局区和后台进行。系统全局区内存结构存储数据库的共享数据和控制信息。后台进程多个进程协同工作负责数据库的读写、日志记录、恢复等操作。4、实例与数据库的关系实例是数据库的管理者它在内存中运行管理数据库的所有操作。数据库是实例管理的对象是存储在磁盘上的数据集合。5、DM数据库总体架构图二、DM 逻辑存储结构1.层次关系达梦的逻辑存储结构遵循以下层次关系从上到下是包含关系数据库 (Database) - 表空间 (Tablespace) - 段 (Segment) - 簇 (Extent) - 页 (Page) 数据文件 (Datafile) 作为表空间的物理载体a.数据库有一个或多个表空间组成。b.每个表空间有一个或多个数据文件组成。c.每个数据文件有一个或多个簇组成。d.段是簇的上级逻辑单元一个段可以跨多个数据文件。e.簇由磁盘上连续的页组成一个簇总是在一个数据文件中。f.页是数据库中最小的分配单元也是数据库中使用的最小的IO单元2.数据库 (Database) - 最终的物理与逻辑集合概念数据库是最高层次的逻辑结构是所有表空间、数据文件、段、簇、页的最终集合。它是一个自包含的单元包含了所有的数据、元数据和日志文件。3.表空间 (Tablespace)3.1概念表空间是一个逻辑容器它由一个或多个数据文件组成用于存放所有的段即数据库对象。它是数据库的逻辑划分用于将逻辑存储对象如表、索引与物理数据文件关联起来。3.2类型SYSTEM系统表空间存放数据字典、系统视图、临时系统对象等关键信息。必不可少。ROLL回滚表空间存放事务的回滚信息。用于保证数据一致性和事务回滚。必不可少。TEMP临时表空间存放排序、哈希等操作产生的临时数据。MAIN默认表空间。如果创建对象时不指定表空间则存放在此。HMAIN默认的 HUGE TABLE列存表表空间。用户自定义表空间用户可以根据业务需求创建自己的表空间如USER_DATA,INDEX_DATA将不同业务的数据分离便于管理和性能优化。3.3作用控制磁盘布局可以将不同的表空间映射到不同的磁盘上实现I/O负载均衡。空间管理可以设置表空间的最大大小、是否自动扩展等。用户权限管理可以给用户指定默认表空间和配额。备份恢复单元可以将表空间作为单独的单位进行备份和恢复。4.段 - 特定数据库对象的存储结构4.1概念段是为特定数据库对象如表、索引、回滚段等分配的所有簇的集合。它是一个独立的逻辑存储结构对应一个具体的数据库对象。4.2类型数据段 (Data Segment)存储表或表的分区的数据。索引段 (Index Segment)存储索引的数据。回滚段 (Rollback Segment)存储事务的回滚信息。LOB段 (LOB Segment)存储大型对象如 TEXT, BLOB, CLOB数据。4.3作用每个段只属于一个特定的数据库对象。例如你创建一张表 EMPLOYEES数据库就会自动创建一个数据段来存放该表的数据如果你再为 EMPLOYEES 表创建一个索引 IDX_EMP_ID数据库又会创建一个独立的索引段来存放这个索引。5.簇 (Extent) - 空间分配的单元5.1概念簇是由一系列连续的页组成的逻辑单元。它是数据库为对象如表、索引分配存储空间的基本单位。5.2大小一个簇包含的页数是固定的。当表空间页大小为8K/16K时一个簇包含16个页即128K / 256K当页大小为32K时一个簇包含8个页即256K。5.3作用当创建一个新表时数据库会为其分配一个初始簇。当表的数据不断增长现有簇的空间用完时数据库会一次性分配一个新的簇给这个表。这种按簇分配的方式比按页分配效率高得多减少了空间管理的开销。6.页 (Page) - 最小的I/O单元6.1概念页是达梦数据库中最小的数据存储和管理单元也是磁盘I/O操作的最小单位。所有对象表、索引的数据都存储在页中。6.2大小默认大小为8KB在初始化数据库实例时可以指定为 4K、8K、16K 或32KB建议页大小大于等于操作系统块大小。一旦数据库创建完成页大小就无法更改。6.3内容一个数据页通常包含页头、数据行、空闲空间和页尾等部分。页头包含了诸如页类型、上一页、下一页等信息。6.4作用所有数据的读取和写入都是以“页”为单位进行的。即使只修改一行数据数据库也会将整个页加载到内存缓冲区中修改后最终再整页写回磁盘。7.数据是如何存储的当我们插入一行数据到表中时这行数据会被写入到某个页中。多个连续的页组成了一个簇。该表所有的簇构成了该表的数据段。这个段必须位于某个表空间中。而这个表空间最终由一个或多个物理数据文件组成所有这些共同构成了数据库。三、物理存储结构DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。1典型的物理存储结构包括用于进行功能设置配置文件用于记录文件分布控制文件用于保存用户实际数据数据文件、重做日志文件、归档日志文件、备份文件用来进行问题跟踪跟踪日志文件和逻辑日志文件等。2.配置文件用于控制和调整数据库实例、进程的行为和性能。2.3分类dm.ini主配置文件包含了数据库运行所需的几乎所有参数如内存设置、线程配置、缓冲区大小、控制文件路径等。其中手工修改dm.ini参数文件,然后重启才能生效。查看参数信息select * from vdm_ini where“VDM_INI”.PARA_NAME like UPPER(‘参数关字’)||‘%’;dmmal.iniMAL系统配置文件用于配置MALMessage Access Layer链路是搭建数据守护、DSC集群等分布式环境所必需的文件。dmarch.ini归档配置文件用于配置本地归档、实时归档、即时归档等是搭建容灾体系的核心文件。dm_svc.conf客户端配置文件用于配置连接别名、端口、负载均衡等方便应用程序连接。注意: dm_svc.conf 的工作目录是固定的不能改变。sqllog.ini用于sql日志的配置当且仅当INI参数SVR_LOG1时使用。注意: 如果在服务器启动过程中修改了sqllog.ini文件。修改之后的文件只要调用过程SP_REFRESH_SVR_LOG_CONFIG() 就会生效。dmrep.ini用于配置复制实例dmllog.ini用于配置逻辑日志dmtimer.ini用于配置定时器用于数据守护中记录异步备库的定时器信息或数据复制中记录异步复制的定时器信息。2.2 控制文件功能控制文件是一个二进制文件它记录了数据库必要的初始信息。1记录数据库的物理结构包含数据库名称、创建时间、字符集等。2记录数据文件和日志文件的信息存储所有数据文件、重做日志文件的名称、路径、状态、大小等信息。数据库启动时实例必须读取控制文件才能找到这些文件并挂载数据库。记录检查点信息记录最新的检查点CKPT信息用于保证数据一致性。3记录归档信息记录当前的归档状态和归档日志序列。4记录备份信息如果使用了RMAN等工具进行备份备份元数据可能会记录在控制文件中。建议多路复用存放在不同的物理磁盘上以防止单点故障导致数据库无法启动。当数据库处于开放OPEN状态时其内容会不断被更新。2.3 数据文件1数据文件存储了所有用户数据和大部分系统数据。2所有表、索引、视图、存储过程等对象的数据最终都物理存储在一个或多个数据文件中。数据文件与逻辑结构的表空间相关联。一个表空间由一个或多个数据文件组成但一个数据文件只能属于一个表空间。注意: 不建议使用单个巨大的数据文件为一个表空间创建多个较小的数据文件是更好的选择。2.4 重做日志(REDO 日志)文件重做日志即 REDO 日志指在 DM 数据库中添加、删除、修改对象或者改变数据DM 都会按照特定的格式将这些操作执行的结果写入到当前的重做日志文件中用于保证数据库的持久性Durability和故障恢复。事务恢复如果数据库发生意外宕机实例重启时会利用重做日志前滚和回滚段回滚来恢复到崩溃前的一致性状态。数据同步在数据守护集群Data Watch中主备库通过传输和应用重做日志来保持数据同步。1每个 DM 数据库实例必须至少有 2 个重做日志文件默认两个日志文件为 DAMENG01.log、DAMENG02.log这两个文件循环使用。2日志文件是循环使用的。当一组日志文件写满后会发生日志切换Log Switch开始写入下一组。如果数据库处于归档模式切换时会触发归档操作。3大小和数量需要合理规划。太小的日志文件会导致频繁切换影响性能。4查看重做日志文件信息:select * from SYS.“V$RLOGFILE” ;2.5 归档日志文件归档日志文件是重做日志文件的历史副本。归档日志文件就是在归档模式下重做日志被连续写入到归档日志后所生成了归档日志文件。1完整恢复允许数据库进行时间点恢复Point-in-Time Recovery。即使数据文件损坏只要有最近的备份和之后的所有归档日志就可以将数据库恢复到任意时间点。2支撑集群与容灾是配置数据守护集群主备库、读写分离集群等高级功能的必要条件因为备库需要通过应用归档日志或实时日志来与主库同步2.6 其他文件:其他文件包括逻辑日志文件 ,物理逻辑日志文件,备份文件,sql日志文件,事件日志文件,数据重演文件。2.7 达梦数据库安装路径内容四、内存结构1 共享内存池共享内存池是数据库在启动时会向服务器申请一大片内存供其他内存池或者缓冲区在不够用时提供调用。减少系统的调用提升数据库的性能。参数MEMORY_POOL 单位Mselect para_name,para_value from vdm_ini where para_name‘MEMORY_POOL’;2 数据缓冲区 数据缓冲区缓存的是数据页。数据缓冲区和共享内存池没有关系通过三条链表来管理数据缓冲区中的数据页。数据缓冲区满淘汰 LRU 链表上很少被使用到的数据页。 数据缓冲区大小设置建议 OLTP:物理内存的 40%-60% OLAP:物理内存的 60%-80% 数据缓冲区类型normal,keep 可以手动管理达梦数据库 keep 的是表空间Fast,recycle 系统自动管理keep 的是临时表、回滚段的信息 参数BUFFER 单位:M select para_name,para_value from vdm_ini where para_name‘BUFFER’;修改数据缓冲区大小为 800Msp_set_para_value(2,‘BUFFER’,800);3 重做日志缓冲区缓存的是重做日志记录的信息单位是页。重做日志缓冲区不够用时会向服务器申请内存。参数RLOG_BUF_SIZE 单位页select para_name,para_value,para_type from vdm_ini where para_name‘RLOG_BUF_SIZE’;4 SQL 缓冲区 缓存的是包执行计划结果集的信息。当 SQL 类别、包比较多应该调整 SQL缓冲区大小。当 SQL 缓冲区不够用时会共享内存池申请内存。 参数CACHE_POOL_SIZE 单位M select para_name,para_value,para_type from vdm_ini where para_name‘CACHE_POOL_SIZE’;5 字典缓冲区缓存的是数据字典的信息。当数据库中有大量的对象或分区表时考虑增加字典缓冲区的大小。当字典缓冲区不够用时会向共享内存池申请内存。参数DICT_BUF_SIZE 单位Mselect para_name,para_value,para_type from v$dm_ini where para_name‘DICT_BUF_SIZE’;五、线程结构1 监听线程监听线程在数据库服务器端监听来自客户端的连接请求。2 IO 线程将磁盘上的数据页加载到数据缓冲区中将数据缓冲区中的脏页在一定机制下数据缓冲区满、执行检查点、数据库正常关闭更新到磁盘上的数据文件中。3 日志刷新线程将重做日志缓冲区中的记录在一定机制事务提交、执行检查点下更新到磁盘上的重做日志文件中。4 日志归档线程数据库开启归档模式后重做日志文件在归当前将重做日志文件的内容拷贝到归档路径下。5 日志重做线程主要用于数据库的实例恢复。6 达梦数据库中的主要线程总结以上为达梦数据库体系结构的基本内容通过学习这些内容可以基本了解达梦数据库的架构为之后更深入的学习打下基础。达梦社区地址https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2567632.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…