文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

Astore行级压缩

可获得性

本特性自MogDB 3.1.0版本开始引入。

特性简介

MogDB实现了Astore行存表的行级压缩特性,通过自动对压缩表中的数据进行压缩,节省磁盘空间,提高存储效率,同时保证了数据的完整性和可访问性。这使得MogDB成为一种高效的数据库管理系统,适用于存储大量数据的场景。

客户价值

Astore行级压缩可以为企业节约大量的存储空间,将数据库占用的存储空间减少50%至76%。这样的存储空间节约对于企业来说是非常有价值的,可以降低存储成本、提升存储效率,并且有助于企业应对数据爆炸式增长的挑战。同时,在业务高峰场景下,压缩表的性能超过非压缩表的7.3%,这进一步证明了压缩表的优势。除了节约存储空间外,压缩表还能够提升查询性能、减少磁盘IO操作,从而为企业提供更高的效率和响应速度。

特性描述

Astore行级压缩支持如下功能:

  • 创建和修改压缩表;
  • 在对压缩表进行读写操作时自动完成压缩或解压操作;
  • 支持压缩表主备同步;
  • 支持压缩表过期版本回收;
  • 当数据导入到压缩表时支持自动完成压缩;
  • 支持通过GS_COMPRESSION视图展示系统所有压缩表的压缩情况;
  • 兼容一级分区表,包括移动、迁移、合并、更新,分裂,添加,删除,截断分区等所有功能;
  • 兼容二级分区表,二级子分区的相关操作包括新增、删除、分裂、截断分区;
  • 支持在段页式模式下创建压缩表,且段页式压缩表增删改查等特性能正常执行;
  • 压缩表兼容MogDB已经发布的工具;
  • 在autovacuum线程中加入compress page流程,减少磁盘IO次数,加锁次数,从而降低后台压缩开销;

同时,Astore行级压缩优化了相关压缩算法;表的压缩效果对用户透明。

特性约束

  • 仅对Astore行存表生效,不能用于Ustore行存表、列存表和MOT;

  • 默认创建非压缩表;

  • 不能为系统表指定压缩属性;

  • 不能为外表指定压缩属性;

  • 不支持tablespace压缩属性;

  • 分区压缩表,单个分区数据量大于128MB才会执行压缩;

  • 普通vacuum命令,不会执行压缩,vacuum full命令会执行压缩;

  • 后台压缩节省出来的空间不会立即反应到磁盘的空间占用,后续的数据插入会重复使用压缩节省出来的空间;

  • 不支持3.0版本的段页式压缩表升级到5.0版本。如果3.0版本中有段页式压缩表,升级前请将段页式压缩表中的数据导入非压缩表进行备份,然后将段页式压缩表删除,升级完成后重新创建段页式压缩表,并将备份的数据导入新创建的段页式压缩表;

示例

  1. 创建压缩表和非压缩表。

    MogDB=# CREATE TABLE tb_mogdb_compress (id INT, name TEXT, addr TEXT, info TEXT) WITH (compression = yes);
    CREATE TABLE
    MogDB=# CREATE TABLE tb_mogdb_no_compress (id INT, name TEXT, addr TEXT, info TEXT);
    CREATE TABLE
  2. 插入随机数据。

    MogDB=# INSERT INTO tb_mogdb_compress VALUES (generate_series(0, 1999999), 'fasdfasdhigasidfdfhgioashdfgohaosdgh', 'fasdfasdfasdahasdhsfsdgstyjdth', 'fasdhgsoidfhisdifgiosdfiogio');
    INSERT 0 2000000
    MogDB=# INSERT INTO tb_mogdb_no_compress VALUES (generate_series(0, 1999999), 'fasdfasdhigasidfdfhgioashdfgohaosdgh', 'fasdfasdfasdahasdhsfsdgstyjdth', 'fasdhgsoidfhisdifgiosdfiogio');
    INSERT 0 2000000
  3. 执行vacuum full可以立即触发压缩指令。

    MogDB=# vacuum full tb_mogdb_compress;

    img说明:一般在实际应用中,可通过参数autocmpr_naptime来设置两次后台压缩操作的时间间隔来触发压缩。具体配置方法,可参考autocmpr_naptime

  4. 查看压缩表和非压缩表所占大小。

    MogDB=# \d+
                                                 List of relations
     Schema |         Name         | Type  | Owner  |  Size  |              Storage              | Description 
    --------+----------------------+-------+--------+--------+-----------------------------------+-------------
     public | tb_mogdb_compress    | table | yaojun | 105 MB | {orientation=row,compression=yes} | 
     public | tb_mogdb_no_compress | table | yaojun | 256 MB | {orientation=row,compression=no}  | 
    (2 rows)

相关页面

CREATE TABLEALTER TABLEVACUUMCOPYGS_COMPRESSIONautocmpr_naptime

Copyright © 2011-2024 www.enmotech.com All rights reserved.