DM的逻辑结构、物理结构和内存结构

1、逻辑结构

DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。通过这种细分,可以使得 DM 数据库能够更加高效地控制磁盘空间的利用率。

  1. 表空间:表空间由一个或者多个数据文件组成。DM 数据库中的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中

2) 记录:数据库表中的每一行是一条记录。除了 HUGE 表,其他的表都是在数据页中按记录存储数据的,记录是存储在数据页中的,页是 DM 数据库的存储单位。

3)页:数据页(也称数据块)是数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,页大小可以为 4KB8KB16KB 或者 32KB,用户在创建数据库时可以指定,默认大小为 8KB

4)簇:簇是数据页的上级逻辑单元,由同一个数据文件中 16 个或 32 个或 64 个连续的数据页组成。簇的大小由用户在创建数据库时指定,默认大小为 16。一个簇以及该簇所包含的数据页则只能来自一个文件,是连续的 16 或者 32 个数据页

5)段:段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不同文件的簇,一个段可以跨越不同的文件

2、物理结构

DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。包括:

  1. 配置文件:dm.ini、dmmal.ini、dmarch.ini、dm_svc.conf、sqllog.ini、dmrep.ini、dmmlog.ini、dmtimer.ini。
  2. 控制文件:dm.ctl, 控制文件是一个二进制文件,它记录了数据库必要的初始信息(数据库名称、数据库服务器模式、标识、服务器版本等……)。
  3. 数据文件: dbf 为扩展名的文件,是数据库中最重要的文件类型,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的数据文件。
  4. 重做日志文件:REDO日志,文件默认以 log 为扩展名,在数据库中添加、删除、修改对象,或者改变数据,DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中
  5. 归档日志文件:归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档日志文件,归档日志文件以归档时间命名,扩展名默认与初始化数据库时指定的参数 RLOG_POSTFIX_NAME 一致,也可通过 INI 参数 LOG_FILE_POSTFIX_NAME 指定归档日志文件的扩展名,只有在归档模式下运行时,DM 数据库才会将重做日志写入到归档日志文件中
  6. 逻辑日志文件:数据库上配置了复制功能,复制源就会产生逻辑日志文件,逻辑日志文件是一个流式的文件,它有自己的格式,逻辑日志文件内部存储按照复制记录的格式,一条记录紧接着一条记录,存储着复制源端的各种逻辑操作。用于发送给复制目的端。
  7. 物理逻辑日志文件:物理逻辑日志,是按照特定的格式存储的服务器的逻辑操作,专门用于 DBMS_LOGMNR 包挖掘获取数据库系统的历史执行语句。当开启记录物理逻辑日志的功能时,这部分日志内容会被存储在重做日志文件中。
  8. 备份文件:备份文件以 bak 为扩展名,当客户利用管理工具或直接发出备份的 SQL 命令时,DM Server 会自动进行备份,并产生一个或多个备份文件
  9. SQL日志文件:SQL 日志文件是一个纯文本文件,命名格式为“dmsql_实例名[_模式名][_用户名][_日期_时间].log” SQL 日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等
  10. 事件日志文件:事件日志文件记录了 DM 数据库运行时的关键事件,事件日志文件主要用于系统出现严重错误时进行查看并定位问题。

3、内存结构

DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区

  1. 内存池:动态视图 V$MEM_POOL 详细记录了当前系统中所有的内存池的状态
  1. 共享内存池:共享内存池是 DM Server 在启动时从操作系统申请的一大片内存,一次向操作系统申请一片较大内存,作为共享内存池。当系统在运行过程中需要申请小片内存时,可在共享内存池内进行申请,当用完该内存时,再释放掉,即归还给共享内存池。
  2. 运行内存池:运行时内存池是从操作系统申请一片内存作为本功能模块的内存池来使用,如会话内存池、虚拟机内存池等
  1. 缓冲区

A数据缓冲区:数据缓冲区是 DM Server 在将数据页写入磁盘之前以及从磁盘上读取数据页之后,数据页所存储的地方。设得太小,会导致缓冲页命中率低,磁盘 IO 频繁;设得太大,又会导致操作系统内存本身不够用,要设定一个合适值。

B日志缓冲区:日志缓冲区是用于存放重做日志的内存缓冲区。为了避免由于直接的磁盘 IO 而使系统性能受到影响,系统在运行过程中产生的日志并不会立即被写入磁盘,而是和数据页一样,先将其放置到日志缓冲区中。

C字典缓冲区:字典缓冲区主要存储一些数据字典信息,如模式信息、表信息、列信息、触发器信息等。每次对数据库的操作都会涉及到数据字典信息,访问数据字典信息的效率直接影响到相应的操作效率,这些字典信息如果都在缓冲区里,则操作时可以直接从缓冲区中获取即可,否则需要 I/O 才能读取到这些信息。

DSQL缓冲区:SQL缓冲区提供在执行 SQL 语句过程中所需要的内存,很多应用当中都存在反复执行相同 SQL 语句的情况,此时可以使用缓冲区保存这些语句和它们的执行计划,这就是计划重用。这样带来的好处是加快了 SQL 语句执行效率

3)排序区:当执行 SQL 语句时,常常需要进行排序,排序缓冲区提供数据排序所需要的内存空间。

4)哈希区:该缓冲区是个虚拟缓冲区。虚拟缓冲,是因为系统没有真正创建特定属于哈希缓冲区的内存,而是在进行哈希连接时,对排序的数据量进行了计算。如果计算出的数据量大小超过了哈希缓冲区的大小,则使用 DM8 创新的外存哈希方式;如果没有超过哈希缓冲区的大小,实际上还是使用内存池来进行哈希操作。

https://eco.dameng.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值