可获得性
本特性自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版本中有段页式压缩表,升级前请将段页式压缩表中的数据导入非压缩表进行备份,然后将段页式压缩表删除,升级完成后重新创建段页式压缩表,并将备份的数据导入新创建的段页式压缩表;
示例
-
创建压缩表和非压缩表。
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 -
插入随机数据。
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 -
执行vacuum full可以立即触发压缩指令。
MogDB=# vacuum full tb_mogdb_compress;
说明:一般在实际应用中,可通过参数autocmpr_naptime来设置两次后台压缩操作的时间间隔来触发压缩。具体配置方法,可参考autocmpr_naptime。 -
查看压缩表和非压缩表所占大小。
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 TABLE、ALTER TABLE、VACUUM、COPY、GS_COMPRESSION、autocmpr_naptime




