更新时间:2026-07-28 GMT+08:00
分享

列存数据压缩

HTAP提供数据压缩能力,提升内存资源使用率。该功能可通过htap_compression_methods参数开启。

由于列存扫描需要对压缩数据进行解压,因此开启压缩功能后,相较于未开启压缩时,对列存扫描性能有一定影响。

针对不同的数据类型,支持自适应选择更高效的压缩算法,当前支持的算法类型有Dict、Delta+RLE、LZ4。

示例:

--查看GUC参数。
gaussdb=# SHOW htap_compression_methods;
 htap_compression_methods 
--------------------------
 all
(1 row)

--创建行存表并插入数据。
gaussdb=# CREATE TABLE test_compression(id int, a numeric(15,2), b varchar(100));
CREATE TABLE
gaussdb=# INSERT INTO test_compression SELECT id,FLOOR(id/100)+0.5, SUBSTRING(md5(id),0.5) FROM GENERATE_SERIES(1,1000) AS t(id);
INSERT 0 1000

--创建IMCV。
gaussdb=# ALTER TABLE test_compression COLVIEW;
ALTER TABLE

--通过gs_imcu_meta系统函数查询test_compression表每列的压缩算法和压缩率。
gaussdb=# SELECT rel_name,imcu_size, imcu_data_size, compressed_data_size, compressed_ratio FROM gs_imcu_meta('test_compression', NULL);
     rel_name     | imcu_size | imcu_data_size | compressed_data_size | compressed_ratio 
------------------+-----------+----------------+----------------------+------------------
 test_compression |      5075 |           8008 |                 1075 |           7.4493
 test_compression |      6034 |           4008 |                 2034 |           1.9705
 test_compression |      4083 |          14008 |                   83 |          168.771
 test_compression |     36048 |          36008 |                32048 |          1.12356
(4 rows)

gaussdb=# DROP TABLE test_compression;
DROP TABLE

相关文档