400-090-9964


博客 | 论坛

教学文章

达梦数据库DM8 DBA管理员手册:DM逻辑存储结构-簇

时间:2020-11-26 来源:

达梦数据库DM8 DBA管理员手册:DM逻辑存储结构-簇

簇是数据页的上级逻辑单元 ,由同一个数据文件中 16 个或 32 个连续的数据页组成。

在 DM数据库中,簇的大小由用户在创建数据库时指定,默认大小为 16。假定某个数据文件大小为 32MB,页大小为 8KB,则共有 32MB/8KB/16=256 个簇,每个簇的大小为8K*16=128K。和数据页的大小一样,一旦创建好数据库,此后该数据库的簇的大小就不能够改变。

1. 分配数据簇

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

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

2. 释放数据簇

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

对于临时表空间,DM 数据库会自动释放在执行 SQL 过程中产生的临时段,并将属于此临时段的簇空间还给临时表空间。需要注意的是,临时表空间文件在磁盘所占大小并不会因此而缩减,用户可以通过系统函数 SF_RESET_TEMP_TS来进行磁盘空间的清理。

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

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright 2017 ALL Rights Reserved 京ICP备11008061号 京公网110108006275号

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com bd.cuug.com

电话:010-59426307 010-59426319 邮政编码:100089

海淀校区:北京市海淀区紫竹院路88号紫竹花园4号楼D座703(CUUG)