写点什么

YashanDB 表的存储空间

作者:YashanDB
  • 2025-03-17
    广东
  • 本文字数:1120 字

    阅读完需:约 4 分钟

存储空间规划

在搭建一套数据库时,管理员需要进行存储空间的设计,并将其分配给业务用户,数据库开发人员使用这套默认的存储空间创建表对象,可以让开发人员无需过多考虑底层存储约束,简化应用逻辑。

在使用CREATE TABLE创建表对象时,不使用 TABLESPACE 指定表空间,系统将默认为用户的所属表空间,表数据。

进入规划的存储空间内,其中临时表数据将进入系统临时表空间内。

除此之外,建议管理员还规划如下存储空间供开发人员指定:

  • 为每一个用户表空间建立一个相应的索引表空间。

  • 在需要时,为分区表的分区建立一个独立表空间。

  • 为大对象数据建立一个或多个独立表空间。

需注意的是,对于 LSC 表,管理员需要预先为其规划和创建 databucket 表空间,用于存储 SCOL 稳态数据。

Note

TAC 表和 LSC 表可变数据都是按列组织,每列采用段页式结构存储。

即便插入一条数据,每列都会预分配特定数量(最大 384 个)的页面。

尤其在表的分区和列数很多的场景下,插入容易出现表空间不足的错误。处理方法可参考错误码YAS-02007


空间优化

数据库管理员可以通过 SQL 语句管理表的存储空间,详细语法描述请参考开发手册CREATE TABLEALTER TABLE

HEAP 表

基于行存特征,对表的频繁更新、删除等操作可能导致产生碎片,表占用空间变得膨胀,此时采用 shrink table 功能可以重整 HEAP 表的存储结构,将表的数据空间进行收缩。

示例(单机 HEAP 表)

ALTER TABLE orders_info ENABLE ROW MOVEMENT;-- 默认shrink后释放空出来的extent,供其他表使用ALTER TABLE orders_info SHRINK SPACE;-- COMPACT表示不释放ALTER TABLE orders_info SHRINK SPACE COMPACT;
-- 对某个分区空间进行shrinkALTER TABLE orders_info MODIFY PARTITION p_orders_info_1 SHRINK SPACE COMPACT;
复制代码


Note

  • 在执行 shrink table 之前,对表数据进行备份是更加保险的一种做法。

  • shrink table 可以在线操作,不影响 DML 执行。


LSC 表稳态数据

LSC 表的稳态数据以 slice 文件存储,对这部分数据的空间优化包括:1)将离散的小的 slice 文件进行合并;2)将无序的 slice 文件进行排序。

YashanDB 默认启动后台数据转换任务,自动对 slice 文件执行上述优化,优化期间会产生额外的资源消耗,用户可以根据实际情况对某张表关闭该操作:

示例(单机 LSC 表)

-- 关闭后,系统不再自动对orders_info表的稳态数据进行空间优化ALTER TABLE orders_info DISABLE COMPACT;
复制代码

并在需要时手动对表启动一次空间优化,提高查询性能:

示例(单机 LSC 表)

ALTER TABLE orders_info ENABLE COMPACT;ALTER TABLE orders_info ALTER SLICE ALL COMPACT;
复制代码


Note

  • 在资源允许的情况下,建议不要关闭 COMPACT 开关,由系统自动判断空间优化的时机并执行优化。

  • 如必须采取手动执行 COMPACT 的方式,建议安排在业务空闲时间,避免影响其他操作。

发布于: 刚刚阅读数: 4
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB表的存储空间_数据库_YashanDB_InfoQ写作社区