博客
关于我
DM达梦数据库体系结构详解
阅读量:566 次
发布时间:2019-03-09

本文共 1866 字,大约阅读时间需要 6 分钟。

DM数据库系统结构分析

1、DM逻辑结构

达梦(DM)数据库系统的逻辑结构与Oracle类似,主要包括实例和数据库两个概念。两者唯一的区别在于:达梦是单进程模型,而Oracle是多进程模型。

实例与数据库

  • 实例:在达梦中,实例是由共享内存和后台进程或线程组成的。通常情况下,一个数据库对应一个实例,不过在DSC(DM共享集群)环境下,多个实例可以共享同一个数据库。

  • 数据库:数据库是存储在磁盘文件中的容器,类似Oracle的schema。数据库可以由一个或多个表空间组成。

数据库的组成

  • 表空间:数据库由一个或多个表空间组成,每个表空间由一个或多个数据文件组成。
  • 数据文件:数据文件是存储实际数据的地方,每个数据文件对应磁盘上的一个物理文件。
  • :页是数据库中的最小存储单位,也是IO操作的基本单位。

2、DM物理结构

DM数据库的物理存储结构包括配置文件、控制文件、数据文件、重做日志文件、归档文件、逻辑日志文件、备份文件以及日志文件等。

2.1 配置文件

配置文件是DM数据库的功能设置文件,主要以ini为扩展名,例如dm.inidmarch.ini

2.2 控制文件

每个数据库都有一个名为dm.ctl的控制文件,记录了数据库的初始信息。这是一个二进制文件。

2.3 数据文件

数据文件以dbf为扩展名,是数据库中最重要的文件类型。一个数据库至少有一个数据文件,实际应用中通常有多个数据文件。

2.4 重做日志文件

重做日志文件用于数据库的备份和恢复,是数据库Crash recovery的重要依据。

2.5 归档文件

归档日志文件支持恢复到故障前的时间点,也可以还原到指定的时间点。

2.6 逻辑日志文件

在配置数据库复制时,会产生逻辑日志文件。

2.7 备份文件

备份文件以bak为扩展名。

2.8 日志文件(事件日志)

在DM数据库上配置SVR_LOG和SVR_LOG_SWITCH_COUNT参数后,会生成事件日志文件,这些文件记录了系统运行中的关键事件,如启动、关闭、内存申请失败等。

3、DM内存结构

在DM数据库中,内存结构主要包含内存池、缓冲区、排序区、哈希区等区域。这些区域的设计和管理方式与Oracle类似。

3.1 共享内存

共享内存是指系统可用的物理内存资源,用来存放各个数据库的共享区域。查看共享内存大小可以通过以下SQL语句:

SQL> select para_name, para_value from v$dm_ini where para_name='MEMORY_TARGET';

3.2 数据缓冲区

数据缓冲区用于存储数据库操作的相关内容,是实现高效数据访问的关键。缓冲区采用LRU(最不_recently_used)的回收策略。

状态 描述
free 最近未使用
dirty 数据已修改
clean 无数据
pending 数量不足

查看缓冲区大小和最大值可以通过以下SQL语句:

SQL> select para_name, para_value from v$dm_ini where para_name='BUFFER';  -- 查看缓冲区大小SQL> select para_name, para_value from v$dm_ini where para_name='MAX_BUFFER';  -- 查看最大缓冲区大小

3.3 字典缓冲区

字典缓冲区用于存储数据字典信息,参数DICT_BUF_SIZE控制字典缓冲区的大小。

3.4 SQL缓冲区

SQL缓冲区存储最近执行的SQL语句和查询结果集,用于减少硬interpreted(解析)次数。

3.5 排序区

排序区用于存放排序操作的缓存。当内存不足时,部分排序操作会临时写到磁盘上。

3.6 HASH区

HASH区用于存放哈希表的数据,是查询某些信息的有效区域。

3.7 重做日志文件管理

管理重做日志文件可以通过以下SQL命令:

SQL> select path from v$rlogfile;  -- 查看重做日志文件路径SQL> alter database add logfile '/dm7/data/DAMNEG/DAMENG04.log' size 512;  -- 添加日志文件SQL> alter database resize logfile '/dm7/data/DAMNEG/DAMENG04.log' to 1024;  -- 修改日志文件大小

需要注意所有重做日志文件大小必须一致。

转载地址:http://ydcpz.baihongyu.com/

你可能感兴趣的文章
PyQ5学习笔记——使用内部槽函数关闭窗口
查看>>
PyQ5学习笔记——使用自定义槽函数关闭窗口
查看>>
PyQt MimeData 文件名
查看>>
PyQt QML Material Design 按钮背景不会改变
查看>>
PyQt QString转成python stirng
查看>>
PyQt QToolButton在焦点时不更新图标
查看>>
PyQt 正确使用 emit() 和 pyqtSignal()
查看>>
PyQT-将文件复制到剪贴板
查看>>
PYQT.如何在QTableView中插入小部件
查看>>
PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
查看>>
PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
查看>>
PyQt4, class:mouseButtons用法
查看>>
PyQt4参考文档
查看>>
PyTorch Lightning:通过分布式训练扩展深度学习工作流
查看>>
PyQt5 - QThread:在线程仍在运行时被销毁
查看>>
PyQt5 - 如何从工作线程发出信号以通过 GUI 线程调用事件
查看>>
PyQt5 Designer 不工作:此应用程序无法启动,因为无法初始化 Qt 平台插件
查看>>
PyQt5 QLCNumber 没有更新
查看>>
PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用
查看>>
PyQt5 从 PyQt4 转换信号代码
查看>>