DM体系结构(段、簇、页)

目录

1.数据库和实例

1.1数据库

1.2实例 

2.1表空间

2.2系统表空间(DM8版本)

2.3页、簇、段

2.3.1页

2.3.2簇

2.3.3段


1.数据库和实例

1.1数据库

是一个文件集合(控制文件、数据文件、重做日志文件、临时文件等), 保存在物理磁盘或文件系统中。

1.2实例

是一组操作系统进程(或者是一个多线程的进程)异机一些内存。通过数据库实例,可以操作数据库,一般情况下,我们访问、修改数据库都是通过数据库实例来完成。

两者关系

初始化实例,会在磁盘或文件系统中生成一个数据目录,目录名是数据库名。目录里带有这个库的配置文件。我们启动数据库服务,并且指定该数据库的配置文件,即可将这个数据库拉起,同时会看到这个数据库服务的进程。拉起后,数据库的部份将会加载到内存中。

实例=服务进程+内存

  1. 逻辑存储结构

达梦使用的表空间,所有数据文件组合都放在表空间里,并将表空间进一步划分为段、簇、页(块)数据库由1个或多个表空间组成

2.1表空间

  1. 表空间存放用户、表、存储过程等东西。因此,表空间由1个或多个数据文件组成
  2. 每个数据文件,会被划分为多个簇
  3. 此时簇会很多,为了方便管理,把一定数量的簇都放到段里
  4. 段是个抽象概念,包含1个或多个簇,同时这些簇可以来自不同的数据文件,所以段能跨多个数据文件
  5. 将簇再进一步划分,划分为页(块),所以簇由多个页组成。页也是数据库中最小的单元。

2.2系统表空间(DM8版本)

(1)SYSTEM:存放数据字典,用户不能在 SYSTEM 表空间创建表和索引

(2)ROLL:表空间完全由 DM 数据库自动维护,用户无需干预。该表空间用来存放事务运行过程中执行 DML 操作之前的值,从而为访问该表的其他用户提供表数据的读一致性视图

(3)在创建用户时,如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间

(4)表空间完全由 DM 数据库自动维护。当用户的 SQL 语句需要磁盘空间来完成某个操作时,DM 数据库会从 TEMP 表空间分配临时段。如创建索引、无法在内存中完成的排序操作、SQL 语句中间结果集以及用户创建的临时表等都会使用到 TEMP 表空间

每个用户都有一默认表空间,对于 SYS、SYSSSO、SYSAUDITOR 系统用户,默认的用户表空间是 SYSTEM,SYSDBA 的默认表空间为 MAIN,新创建的用户如果没有指定默认表空间,则系统自动指定 MAIN 表空间为用户默认的表空间

2.3页、簇、段

数据库表中的每一行是一条记录。在 DM 中,除了 HUGE 表,其他的表都是在数据页中按记录存储数据的。也就是说,记录是存储在数据页中的,记录并不是 DM 数据库的存储单位,页才是。由于记录不能跨页存储,这样记录的长度就受到数据页大小的限制。数据页中还包含了页头控制信息等空间,因此 DM 规定每条记录的总长度不能超过页面大小的一半

补:HUGE表是一种列存储表,其建立在HUGE FILE SYSTEM(HFS)机制上。HFS是达梦数据库对海量数据进行分析的一种高效、简单的列存储机制。

HUGE表存储在HTS(HUGE TABLESPACE)表空间上,最多可以创建32767个HUGE表空间。默认的HUGE表空间是HMAIN。

HUGE表空间和普通表空间的不同:

1对于普通表空间,数据是通过段、、页来管理的,并且是固定大小(4k、8k、16k、32k)的页为管理单位。

(2)HUGE表空间是通过HFS存储机制来管理的。HTS本质上是一个空的文件目录。在创建HUGE表并插入数据时,数据库会在指定的HTS表空间目录下创建一系列的目录及文件。

达梦数据库支持两种类型的HUGE表:非事务型HUGE表和事务型HUGE表。

创建HUGE表空间的SQL语句如下

create huge tablespace htbs path '/u01/dm8/dmdbms/data/dmtest/htbs01.dbf';

查看HUGE表空间:

select * from v$huge_tablespace;

HUGE表与普通表一样,可以进行增、删、改操作。但是HUGE表的删除与更新操作的效率会比较低,因此在HUGE表中不宜做频繁的删除及更新操作。

删除HUGE表空间:

drop huge tablespace htbs;

2.3.1页

数据页(也称数据块)是 DM 数据库中最小的数据存储单元。页的大小对应物理存储空间上特定数量的存储字节,在 DM 数据库中,页大小可以为 4KB、8KB、16KB 或者 32KB,用户在创建数据库时可以指定,默认大小为 8KB,一旦创建好了数据库,则在该库的整个生命周期内,页大小都不能够改变

2.3.2簇

簇是数据页的上级逻辑单元,由同一个数据文件中 16 个或 32 个或 64 个连续的数据页组成。在 DM 数据库中,簇的大小由用户在创建数据库时指定,默认大小为 16。假定某个数据文件大小为 32MB,页大小为 8KB,则共有 32MB/8KB/16=256 个簇,每个簇的大小为 8K*16=128K。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。 可以创建数据簇也可以释放数据簇。

2.3.2.1分配数据簇

当创建一个表/索引的时候,DM为表/索引的数据段至少分配一个簇,同时数据库会自动生成对应数量的空闲数据页以供使用。如果初始分配的簇中所有数据页都已用完,或者新插入/更新数据需要更多的空间,DM数据库会自动分配新的簇。在缺省的情况下,DM数据库在创建表/索引时,初始分配1个簇,当初始分配的空间用完时,DM数据库会自动扩展。

当DM数据库的表空间为新的簇分配空闲空间时,首先在表空间按文件从小到大的顺序在各个数据文件中查找可用簇,找到后进行分配。

如果各个数据文件都没有空闲簇,则在各个数据文件中查找空闲空间足够的,将需要的空间先进行格式化,然后进行分配。如果各文件的空闲空间也不够,则选一个数据文件进行扩充。

2.3.2.2释放数据簇

对于用户数据表空间,在用户将一个数据段对应的表/索引对象 DROP 之前,该表对应的数据段会保留至少 1 个簇不被回收到表空间中。在删除表/索引对象中的记录的时候,DM 数据库通过修改数据文件中的位图来释放簇,释放后的簇被视为空闲簇,可以供其他对象使用。当用户删除了表中所有记录时,DM 数据库仍然会为该表保留 1-2 个簇供后续使用。若用户使用 DROP 语句来删除表/索引对象,则此表/索引对应的段以及段中包含的簇全部收回,并供存储于此表空间的其他模式对象使用。

对于临时表空间,DM 数据库会自动释放在执行 SQL 过程中产生的临时段,并将属于此临时段的簇空间还给临时表空间。

对于回滚表空间,DM 数据库将定期检查回滚段,并确定是否需要从回滚段中释放一个或多个簇。

2.3.3段

段是簇的上级逻辑分区单元,它由一组簇组成。在同一个表空间中,段可以包含来自不同文件的簇,即一个段可以跨越不同的文件。而一个簇以及该簇所包含的数据页则只能来自一个文件,是连续的 16 或者 32 个数据页。由于簇的数量是按需分配的,数据段中的不同簇在磁盘上不一定连续。

段可分为以下几个类型:

数据段、回滚段、临时段

 达梦云适配技术社区
https://eco.dameng.com/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值