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

列存数据压缩

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

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

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

示例:

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

--创建行存表并插入数据。
htapdb=# CREATE TABLE test_compression(id int, a numeric(15,2), b varchar(100));
CREATE TABLE
htapdb=# 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。
htapdb=# ALTER TABLE test_compression COLVIEW;
ALTER TABLE

--通过gs_imcu_meta系统函数查询test_compression表每列的压缩算法和压缩率。
htapdb=# SELECT node_name, rel_name,imcu_size, imcu_data_size, compressed_data_size, compressed_ratio FROM gs_global_imcu_meta('test_compression', NULL);
 node_name |     rel_name     | imcu_size | imcu_data_size | compressed_data_size | compressed_ratio

-----------+------------------+-----------+----------------+----------------------+------------------
 datanode1 | test_compression |      5075 |           8008 |                 1075 |           7.4493
 datanode1 | test_compression |      6034 |           4008 |                 2034 |           1.9705
 datanode1 | test_compression |      4083 |          14008 |                   83 |          168.771
 datanode1 | test_compression |     36048 |          36008 |                32048 |          1.12356
(4 rows)

htapdb=# DROP TABLE test_compression;
DROP TABLE

相关文档