暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM逻辑存储结构-簇

原创 zy 2022-11-29
594

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

分配数据簇
当创建一个表/索引的时候,DM为表/索引的数据段分配至少一个簇,同时数据库会自动生成对应数量的空闲数据页,供后续操作使用。如果初始分配的簇中所有数据页都已经用完,或者新插入/更新数据需要更多的空间,DM数据库将自动分配新的簇。在缺省情况下,DM数据库在创建表/索引时,初始分配1个簇,当初始分配的空间用完时,DM数据库会自动扩展。
当DM数据库的表空间为新的簇分配空闲空间时,首先在表空间按文件从小到大的顺序在各个数据文件中查找可用的空闲簇,找到后进行分配;如果各数据文件都没有空闲簇,则在各数据文件中查找空闲空间足够的,将需要的空间先进行格式化,然后进行分配;如果各文件的空闲空间也不够,则选一个数据文件进行扩充。

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

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

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论