达梦数据库体系结构学习
提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录前言一、数据库与实例概念二、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
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!