欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DM8数据库的体系结构

程序员文章站 2022-06-30 12:18:44
本文主要带大家简单了解一下DM数据库的体系结构DM数据库服务由数据库+实例组成,其中数据库包含了磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件,日志文件,控制文件以及配置文件。数据库1.数据文件存放数据的文件。以dbf为扩展名。是表空间的组成单位。数据文件是数据库最重要的文件类型。是真实数据存储的地方。2. 日志文件指在 DM 数据库中添加、删除、修改对象,或者改变数据, DM都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文 件以log为扩展名。每个D...

本文主要带大家简单了解一下DM数据库的体系结构
DM8数据库的体系结构

DM数据库服务由数据库+实例组成,其中数据库包含了
磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件,日志文件,控制文件以及配置文件。

数据库

1.数据文件

存放数据的文件。以dbf为扩展名。是表空间的组成单位。数据文件是数据库最重要的文件类型。是真实数据存储的地方。
2. 日志文件

指在 DM 数据库中添加、删除、修改对象,或者改变数据, DM都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文 件以log为扩展名。每个DM数据库实例必须至少有2个重做日志文件,默认两个日志文件 为DAMENG01.log、DAMENG02.log,这两个文件循环使用。主要用于数据库的备份与恢复
3.控制文件

是数据库重要的文件。记录各种文件的位置信息。是一个二进制文件。
4.配置文件

配置文件是DM数据库用来设置功能选项的一些文本文件的集合,配置文件以ini为扩 展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的 目标: 1. 启用/禁用特定功能项; 2. 针对当前系统运行环境设置更优的参数值以提升系统性能。

实例

实例是由后台进程和内存结构组成,DM8数据库与众不同的地方在于单进程多线程。
DM8数据库的体系结构

一、内存结构

DM数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统 中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。
1.内存池(select * from v$mem_pool)
共享内存池是 DM Server 在启动时从操作系统申请的一大片内存。采用共享内存池可一次向操作系统申请一 片较大内存,即为内存池,当系统在运行过程中需要申请内存时,可在共享内存池内进行申 请,当用完该内存时,再释放掉,即归还给共享内存池。降低访问系统频率,从而提高效率
2.缓冲区
2.1数据缓冲区
数据缓冲区的作用有两个:1.缓冲从磁盘上读取到的数据,保存在内存中,从而提高数据的读取速度 2.写脏块,将更新等操作写入到内存中,效率更快。
2.2日志缓冲区
日志缓冲区是用于存放重做日志的内存缓冲区。为了避免由于直接的磁盘 IO 而使系统性能受到影响,系统在运行过程中产生的日志并不会立即被写入磁盘,而是和数据页一样, 先将其放置到日志缓冲区中.
2.3字典缓冲区
字典缓冲区主要存储一些数据字典信息,如模式信息、表信息、列信息、触发器信息等。该缓冲区配置参数为DICT_BUF_SIZE,默认的配置大小为5M
2.4sql缓冲区
SQL缓冲区提供在执行SQL语句过程中所需要的内存,包括计划、SQL语句和结果集缓存。
很多应用当中都存在反复执行相同SQL语句的情况,此时可以使用缓冲区保存这些语句 和它们的执行计划,这就是计划重用。这样带来的好处是加快了SQL语句执行效率,但同时 给内存也增加了压力。
3.排序区
排序缓冲区提供数据排序所需要的内存空间。当用户执行SQL语句时,常常需要进行排 序,所使用的内存就是排序缓冲区提供的。在每次排序过程中,都首先申请内存,排序结束再释放内存。
4.哈希区
DM8提供了为哈希连接而设定的缓冲区,不过该缓冲区是个虚拟缓冲区。之所以说是虚 拟缓冲,是因为系统没有真正创建特定属于哈希缓冲区的内存,而是在进行哈希连接时,对 排序的数据量进行了计算。如果计算出的数据量大小超过了哈希缓冲区的大小,则使用DM8 创新的外存哈希方式;如果没有超过哈希缓冲区的大小,实际上使用的还是 VPOOL 内存池 来进行哈希操作。
二、DM线程
DM 服务器使用“对称服务器构架”的单进程、多线程结构。这种对称服务器构架在有效 地利用了系统资源的同时又提供了较高的可伸缩性能,这里所指的线程即为操作系统的线程。
1.监听线程
监听线程主要的任务是在服务器端口上进行循环监听,一旦有来自客户的连接请求,监 听线程被唤醒并生成一个会话申请任务,加入工作线程的任务队列,等待工作线程进行处理。 它在系统启动完成后才启动,并且在系统关闭时首先被关闭。为了保证在处理大量客户连接 时系统具有较短的响应时间,监听线程比普通线程优先级更高。
2.工作线程
工作线程是 DM 服务器的核心线程,它从任务队列中取出任务,并根据任务的类型进行 相应的处理,负责所有实际的数据相关操作。 DM8的初始工作线程个数由配置文件指定,随着会话连接的增加,工作线程也会同步增 加,以保持每个会话都有专门的工作线程处理请求。工作线程与会话连接是一一对应的关系。
3.I/O线程
由I/O线程来完成对磁盘的读写。相当于由专人负责读写事件,提高效率。I/O线程不是唯一的可以根据情况设定个数。I/O线程的主要作用为读写数据缓冲区中的内容:
1.需要处理的数据页不在缓冲区中,此时需要将相关数据页读入缓冲区;
2.缓冲区满或系统关闭时,此时需要将部分脏数据页写入磁盘;
3.检查点到来时,需要将所有脏数据页写入磁盘。
4.调度线程
调度线程用于接管系统中所有需要定时调度的任务。相当于线程中的管家角色 。类似于oracle中的pmon进程。调度线程每秒钟轮询一次,负责的任务有以下一些:
1.检查系统级的时间触发器,如果满足触发条件则生成任务加到工作线程的任务队列 由工作线程执行;
2. 清理SQL缓存、计划缓存中失效的项,或者超出缓存限制后淘汰不常用的缓存项;
3. 检查数据重演捕获持续时间是否到期,到期则自动停止捕获;
4. 执行动态缓冲区检查。根据需要动态扩展或动态收缩系统缓冲池;
5. 自动执行检查点。为了保证日志的及时刷盘,减少系统故障时恢复时间,根据INI 参数设置的自动检查点执行间隔定期执行检查点操作;
6. 会话超时检测。当客户连接设置了连接超时时,定期检测是否超时,如果超时则自 动断开连接;
7. 必要时执行数据更新页刷盘;
8. 唤醒等待的工作线程。
5.日志FLUSH线程
任何数据库的修改,都会产生重做REDO日志,为了保证数据故障恢复的一致性,REDO 日志的刷盘必须在数据页刷盘之前进行。事务运行时,会把生成的 REDO 日志保留在日志缓 冲区中,当事务提交或者执行检查点时,会通知 FLUSH 线程进行日志刷盘。由于日志具备 顺序写入的特点,比数据页分散IO写入效率更高。
6.查看线程
查看线程的动态视图

DM8数据库的体系结构

本文地址:https://blog.csdn.net/weixin_48420525/article/details/107631139