为了更好的了解达梦数据库,本文我们就以DM v8(开发版)为基础,对达梦数据库的体系结构进行初步的学习。
总的来说,达梦数据库的体系结构分成4个大的部分,分别是:逻辑结构、物理存储结构、内存结构以及线程结构。接下来,我们就来一起认识一下这4大体系结构。
一、逻辑结构概述
1.1 关于数据库和实例
对Oracle数据库有过了解的同学应该有知道,Oracle有实例和数据库之分,相应的,在达梦数据库里面,也是有数据库和实例之分。常规来讲,DM数据库指的是磁盘上存放在DM数据库中的数据的集合,包括:数据文件、日志文件、控制文件以及临时数据文件等。而在达梦数据库中的 实例,则是由一组正在运行的DM后台进程/线程以及一个大型的共享内存组成。通俗来说,实例就是操作DM数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。
关于数据库与实例的关联关系,咱们在后续的 DM共享存储集群(DMDSC)中会有着重介绍。
1.2 DM逻辑存储结构
DM数据库为数据库所有对象分配逻辑空间是存放在数据文件中的。在DM数据库内部,所有的数据文件组合在一起被划分到一个或者多个表空间中,所有的数据库内部对象都存放在这些表空间中。同时,表空间又进一步划分为段、簇和页(也称块)。页是数据库中最小的分配单元,也是数据库中使用的最小的 IO 单元。
上图清楚显示了达梦数据库中的数据结构间关系。可以看出,在DM8中存储的层次结构如下:
- 数据库由一个或多个表空间组成;
- 每个表空间由一个或多个数据文件组成;
- 每个数据文件由一个或多个簇组成;
- 段是簇的上级逻辑单元,一个段可以跨多个数据文件;
- 簇由磁盘上连续的页组成,一个簇总是在一个数据文件中;
- 页是数据库中最小的分配单元,也是数据库中使用的最小的IO单元。
1.2.1 表空间
在创建DM数据库时会自动创建以下5个表空间:
(1)SYSTEM表空间存放了数据库的字典信息。
(2)ROLL表空间用来存放事务运行过程中执行DML操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图。
(3)MAIN表空间在初始化库的时候,会自动创建大小为128M的数据文件MA