YashanDB 表的存储空间
存储空间规划
在搭建一套数据库时,管理员需要进行存储空间的设计,并将其分配给业务用户,数据库开发人员使用这套默认的存储空间创建表对象,可以让开发人员无需过多考虑底层存储约束,简化应用逻辑。
在使用CREATE TABLE创建表对象时,不使用 TABLESPACE 指定表空间,系统将默认为用户的所属表空间,表数据。
进入规划的存储空间内,其中临时表数据将进入系统临时表空间内。
除此之外,建议管理员还规划如下存储空间供开发人员指定:
为每一个用户表空间建立一个相应的索引表空间。
在需要时,为分区表的分区建立一个独立表空间。
为大对象数据建立一个或多个独立表空间。
需注意的是,对于 LSC 表,管理员需要预先为其规划和创建 databucket 表空间,用于存储 SCOL 稳态数据。
Note:
TAC 表和 LSC 表可变数据都是按列组织,每列采用段页式结构存储。
即便插入一条数据,每列都会预分配特定数量(最大 384 个)的页面。
尤其在表的分区和列数很多的场景下,插入容易出现表空间不足的错误。处理方法可参考错误码YAS-02007。
空间优化
数据库管理员可以通过 SQL 语句管理表的存储空间,详细语法描述请参考开发手册CREATE TABLE、ALTER TABLE。
HEAP 表
基于行存特征,对表的频繁更新、删除等操作可能导致产生碎片,表占用空间变得膨胀,此时采用 shrink table 功能可以重整 HEAP 表的存储结构,将表的数据空间进行收缩。
示例(单机 HEAP 表)
Note:
在执行 shrink table 之前,对表数据进行备份是更加保险的一种做法。
shrink table 可以在线操作,不影响 DML 执行。
LSC 表稳态数据
LSC 表的稳态数据以 slice 文件存储,对这部分数据的空间优化包括:1)将离散的小的 slice 文件进行合并;2)将无序的 slice 文件进行排序。
YashanDB 默认启动后台数据转换任务,自动对 slice 文件执行上述优化,优化期间会产生额外的资源消耗,用户可以根据实际情况对某张表关闭该操作:
示例(单机 LSC 表)
并在需要时手动对表启动一次空间优化,提高查询性能:
示例(单机 LSC 表)
Note:
在资源允许的情况下,建议不要关闭 COMPACT 开关,由系统自动判断空间优化的时机并执行优化。
如必须采取手动执行 COMPACT 的方式,建议安排在业务空闲时间,避免影响其他操作。
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/639823e013aec819a368351f6】。文章转载请联系作者。
评论