达梦7体系结构

达梦7体系结构

一、体系结构概览

数据库
DM 数据库指的是磁盘上存放在DM 数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。

实例
实例一般是由一组正在运行的DM 后台进程/线程以及一个大型的共享内存组成。

二、DM存储结构

DM逻辑存储结构如下:

  1. 数据库由一个或多个表空间组成;
  2. 每个表空间由一个或多个数据文件组成;
  3. 每个数据文件由一个或多个簇组成;
  4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
  5. 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
  6. 页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。

达梦7体系结构

DM物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际 数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件。
达梦7体系结构

三、DM内存结构

共享内存池
可以一次性向操作系统申请一大片内存,即内存池在实例运行中要内存时,可在共享内存池进行申请或者释放,共享内存池可以在实例的配置文件dm.ini中进行配置(MEMORY_POOL参数)。

数据缓冲区
缓存使用的数据块,增加逻辑读的次数,提高修改和查询的性能。

字典缓冲区
• 快速访问表,视图等对象的描述
• 系统表到内存对象的映射
• 仅保留活动的数据库对象
• 采用LRU算法淘汰
• 大小由DICT_BUF_SIZE参数决定

日志缓冲区
• 用于存放重做日志的内存缓冲区
• 大小由LOG_BUF_SIZE参数决定
单位为页数量,默认为256页
大小必须为2 的N 次方

SQL缓冲区:
• 用于缓存执行计划、SQL语句、SQL结果集
• USE_PLN_POOL参数为1或2时启用
• 大小由CACHE_POOL_SIZE参数决定

排序区:
• 用于数据排序的内存缓冲区
大小由SORT_BUF_SIZE参数决定

哈希区:
• 用于哈希连接的内存缓冲区
大小由HJ_BUF_SIZE参数决定

SSD缓冲区
•将ssd文件作为内存缓冲与普通磁盘之间的缓冲层
默认是关闭的,将SSD_BUF_SIZE设置为大于0,并指定SSD_FILE_PATH即可启用

四、DM线程
DM线程结构

监听线程
用于在服务器端口上进行循环监听,有来自客户的连接请求,监听线程被唤醒并生成一个会话申请任务,加入工作线程的任务队列,等待工作线程进行处理

工作线程
工作线程是 DM 服务器的核心线程,它从任务队列中取出任务,并根据任务的类型进行 相应的处理,负责所有实际的数据相关操作。 DM7 的初始工作线程个数由配置文件指定,随着会话连接的增加,工作线程也会同步增 加,以保持每个会话都有专门的工作线程处理请求。为了保证用户所有请求及时响应,一个 会话上的任务全部由同一个工作线程完成,这样减少了线程切换的代价,提高了系统效率。 当会话连接超过预设的阀值时,工作线程数目不再增加,转而由会话轮询线程接收所有用户 请求,加入任务队列,等待工作线程一旦空闲,从任务队列依次摘取请求任务处理。

IO线程
通常情况下,DM Server 需要进行 IO 操作的时机主要有以下三种:
1需要处理的数据块不在缓冲区中,此时需要将相关数据块读入缓冲区
2缓冲区满或系统关闭时,此时需要将部分脏数据块写入磁盘
3检查点到来时,需要将所有脏数据块写入磁盘
IO 线程的个数是可配置的,可以通过设置 dm.ini 文件中的 IO_THR_GROUPS 参数来 设置,默认情况下,IO 线程的个数是 2 个。

调度线程
调度线程用于接管系统中所有需要定时调度的任务。调度线程每秒钟轮询一次,负责的任务有以下一些:

  1. 检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列 由工作线程执行;
  2. 清理 SQL 缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
  3. 检查数据重演捕获持续时间是否到期,到期则自动停止捕获;
  4. 执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
  5. 自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据 INI 参数设置的自动检查点执行间隔定期执行检查点操作;
  6. 会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自 动断开连接;
  7. 必要时执行数据更新页刷盘;
  8. 唤醒等待的工作线程。

日志FLUSH线程
主要用于事务提交或检查点时将日志缓冲区中的REDO日志写入到日志文件中。
如果系统配置了实时归档,在 FLUSH线程日志刷盘前,会直接将日志通过网络发送到实时备机。
如果配置了本地归档或者远程同步归档,则生成归档任务,通过日志归档线程完成。

日志归档线程
包含同步归档线程和异步归档线程,前者负责本地归档和远程同步归档任务,后者负责远程异步归档任务。如果配置了非实时归档,由日 志 FLUSH线程产生的任务会分别加入日志归档线程,日志归档线程负责 从任务队列中取出任务,按照归档类型做相应归档处理

日志 APPLY 线程
在配置了数据守护的系统中,创建了一个日志APPLY线程。当服务器作为备库时,每次接收到主库的物理 REDO 日志生成一个APPLY任务加入到任务队列,APPLY线程从任务队列中取出一个任务在备库上将日志重做,并生成自己的日志,保持和主库数据的同步或一致,作为主库的一个镜像。备库数据对用户只读,可承担报表、查询等任务,均衡主库的负载。

定时器线程
数据库完成在某个时间点开始进行某种操作或者是在某个时间段内反复进行某种操作的线程。主要有以下几种:

  1. 逻辑日志异步归档;
  2. 异步归档日志发送(只有在 PRIMARY 模式下,且是 OPEN 状态下);
  3. 作业调度。
    默认情况下,达梦服务器启动的时候,定时器线程是不启动的。用户可以设置 dm.ini 中的 TIMER_INI 参数为 1 来设置定时器线程在系统启动时启动。

逻辑日志归档线程
目的是为了加快异地访问的响应速度,包含本地逻辑日志归档线程和远程逻辑日志归档线程。当配置了数据复制,系统才会创建这两个线程。

MAL系统相关线程
MAL系统是DM内部高速通信系统,基于TCP/IP协议实现。服务器的很多重要功能都是通过 MAL系统实现通信的,例如数据守护、数据复制、MPP、远程日志归档等。MAL系统 内部包含一系列线程,有MAL 监听线程、MAL发送工作线程、MAL接收工作线程等。

其他线程
回滚段清理 PURGE 线程、审计写文件线程、重演捕获写文件线程等

线程信息的查看
DM 提供了很多动态性能视图,通过它们用户可以直观地了解当前系统中有哪些线程在工作:
达梦7体系结构

上一篇:[DM]分类-神经网络


下一篇:sqlserver常用资源消耗sql