更新时间: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 父主题: 使用指导