DM数据库逻辑存储结构

DM数据库指的是磁盘上存放在DM数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等

实例指的是一组正在运行的DM的进程或线程以及一个大型共享的内存组成,是操作DM数据库的一种手段。

DM数据库存储在服务器的磁盘上,而实例存储在服务器的内存中。通过操作数据库实例,可以操作数据库中的内容。

DM数据库为所有的数据库对象分配逻辑空间,并且放在数据文件中,所有的数据文件组合在一起被划分到一个或多个表空间中。表空间被进一步划分为段,簇,页,这种细分可以更高效的控制磁盘空间的使用率。

        

由上图可以看出:

数据库由一个或多个表空间组成

每个表空间由一个或多个数据文件组成

每个数据文件由多个簇组成,段是簇的上级单元,一个段可以跨越多个数据文件

簇由磁盘上连续的页组成,一个簇总在一个数据文件里

页是数据库最小的分配单元,也是数据库中使用的最小的IO单元

 

表空间是由一个或多个数据文件组成,DM所有的对象在逻辑上都存放在表空间里,物理上都存在表空间所属的数据文件里。

创建DM数据库时,系统默认创建的4个表空间:

SYSTEM表空间:存放DM数据库的字典信息。

ROLL表空间:存放事务信息,由数据库自动维护。

MAIN表空间:用户默认表空间。

TEMP表空间:分配零临时磁盘空间,由数据库自动维护。

每一人用户都有一个默认的表空间,SYS、SYSSSO、SYSAUDITOR 系统用户默认的表空间是SYSTEM,而SYSDBA用户的默认表空间是MAIN,如果新建用户没有指定表空间,则系统自动指定它默认的表空间为MAIN,如果用户建表时指定了表空间为A,则表存储在指定的表空间A中,这张表所建的索引也默认存储在表空间A中(指定了除外)。

select * from v$tablespace;查看表空间的相关信息。

select sf_get_page_size()/1024  获取数据库的页大小,获取的单位是K。

v$tablespace中的total_size代表改表空间共有多少个页,所以表空间总大小计算应该为:select total_size*(sf_get_page_size()/1024)/1024  获取的单位是M。

 

数据库中页是数据库的最小存储单元,页的大小可以为4kb、8kb、16kb、32kb,默认为8kb,创建数据库的时候可以指定,数据库创建好后,数据库生命周期内,页的大小都不能改变。

由图可知,页的组成部分,页头控制信息包含了页的类型,也地址等信息。页的中部存放数据,为了更好的利用数据页,在数据页的尾部留了部分空间存放行偏移数组,行偏移组用于标识页上的空间占用情况,以便管理页自身空间。

FILLFACTOR是DM提供的一个与性能有关的数据页存储参数,它指的是一个页初始话后插入数据时最大可使用的空间百分比(100)和可扩展空间百分比(100-FILLFACTOR),该值在创建表或索引时可以指定。可用空间用来执行更多的insert操作,可扩展空间为该页保留一定的空闲空间,防止后期需要增加列或修改变长列的长度引起数据页的频繁分裂。频繁的页分裂会导致大量的IO操作,为提高数据更新性能,可以设置一个相对较低的FILLFACTOR,这样后续有更新操作时,可以提高IO性能,不过这是牺牲空间来提升性能。

簇是也得逻辑上级单元,由同一个数据文件中16个或32个连续的页组成,所以簇的大小计算是:页大小*簇的页的个数,簇同页一样,库建好了就不能改变。

当创建一个表或索引时,DM为表或索引至少分配一个簇,同时数据库会自动生成对应数量空闲的页,供后续操作使用。如果初始分配的簇中的页用完了,需要更多的空间,DM会自动分配新的簇,默认DM初始会分配一个簇,当用完会自动扩充。

当DM的表空间为新的簇分配空闲空间时,首先在表空间按文件从小到大的顺序在各个数据文件中找可用的空闲簇,找到后分配。如各数据文件没有空闲的簇,则在个数据文件中找空闲空间足够的,将空间格式化,然后进行分配。如数据文件空间大小也不够,则需要扩充数据文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值