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

005.达梦数据库簇

原创 梦灵 2020-11-17
1163

簇是数据页的上级逻辑单元 ,由同一个数据文件中 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数据库将定期检查回滚段,并确定是否需要从回滚段中释放一个或
多个簇。

总结

上面即为达梦中数据库簇的概念知识。浅见认知,如有错误,请不吝指正。谢谢!

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

评论