关于数据库的概念,不做专门的论述。简单来讲,数据库就是部署在服务器上,然后提供对应服务的一个基础软件。从而大家可以得知,它肯定有它的实现逻辑方式,物理的存储方式(内存、物理文件),启动后应该有对应的进程。本文我们先对实现逻辑进行一些描述,后期再对其它进行单独的讨论。
DM 数据库为数据库中的所有对象分配逻辑空间,并存放在数据文件中。在 DM 数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。同时,表空间被进一步划分为段、簇和页(也称块)。
可以看出,在 DM8 中存储的层次结构如下:
从上图中,我们可以得知初始化是,会有五个表空间,那么他们分别的作用是什么呢?
1、SYSTEM 表空间存放了有关 DM 数据库的字典信息
2、ROLL 表空间完全由 DM 数据库自动维护,用户无需干预,通俗理解为UNDO。该表空间用来存放事务运行过程中执行 DML(数据操作语言)操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
3、RLOG 表空间称为日志表空间。通俗理解为REDO。默认2个,循环写。
4、MAIN 表空间 是一个混合表空间。初始化是创建,以及一个 HMAIN 目录作为 HUGE 数据文件路径。为啥它叫混合表空间呢?
5、TEMP 表空间完全由 DM 数据库自动维护。比如创建索引、大查询排序等操作都会用到。
我们了解到了基本的逻辑结果,那么对应的参数是哪些呢?
数据库初始化后就不可变更的参数:
页:PAGE_SIZE
数据文件使用的页大小。取值范围 4、8、16、32,单位:KB。缺省值为 8。创建成功后,可通过系统函数 SF_GET_PAGE_SIZE()获取系
统的页大小。
簇:EXTENT_SIZE
数据文件使用的簇大小,即每次分配新的段空间时连续的页数。取值范围 16、32、64。单位:页数。缺省值为 16。创建成功后,可以通过SF_GET_EXTENT_SIZE()获取系统的簇大小。
RLOG 表空间
LOG_SIZE 初始化是可以指定。也可以后期通过resie来改变大小(ALTER DATABASE RESIZE LOGFILE)
TEMP 表空间
TEMP_SIZE 默认创建的临时表空间大小,单位 MB。
TEMP_SPACE_LIMIT 临时表空间大小上限,单位 MB。0 表示不限制临时表空间大小。
以上内容为个人对达梦学习的初步认知,受限于视角与经验,不足之处恳请指正。
谢谢
文章
阅读量
获赞
