暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PanWeiDB 压缩表性能简测

原创 Jcccccccc 2026-06-30
32

数据库版本:PanWeiDB V2.0-S3.2.0_B01

一、测试目的

本次测试旨在验证PanWeiDB数据库中压缩表与普通表在COPY写入场景下的性能差异,分析压缩参数对写入性能的影响,为生产环境压缩表迁移提供数据支撑和参数优化建议。

二、测试环境

环境项

描述

数据库类型

PanWeiDB(基于openGauss内核)

数据库版本

V2.0-S3.2.0_B01

测试数据量

100万行

测试方式

COPY FROM(客户端\copy命令)

三、测试方案

1. 测试表结构

(1)普通表 (test_normal)

CREATE TABLE test_normal (

id bigint,

content text,

amount numeric(18,2),

created_at timestamp

);

(2)压缩表 (test_compressed)

CREATE TABLE test_compressed (

id bigint,

content text,

amount numeric(18,2),

created_at timestamp

) WITH (compresstype=2, compress_chunk_size=512, compress_level=12);

2. 压缩参数说明

参数名

测试值

说明

compresstype

2

压缩算法,2表示zstd算法

compress_chunk_size

512

压缩块大小(KB),默认512

compress_level

12

压缩级别,范围1-12,级别越高压缩比越高但CPU消耗越大

3. 测试步骤

1. 准备100万行测试数据文件(CSV格式)

2. 创建普通表和压缩表

3. 使用 \copy 命令分别导入数据到两张表

4. 记录导入耗时

5. 对比分析性能差异

6. 调整 compress_chunk_size 参数进行二次测试

四、测试结果

1. 初次测试(compress_chunk_size=512)

表类型

导入耗时

平均速度

相对性能

普通表 (test_normal)

约3.2秒

约31万行/秒

100%

压缩表 (test_compressed)

约16.8秒

约6万行/秒

约19%

结论:在 compress_chunk_size=512 的配置下,压缩表写入性能仅为普通表的约19%,性能下降约81%。

2. 参数调整测试(compress_chunk_size调整后)

compress_chunk_size

普通表耗时

压缩表耗时

性能比

512

3.2秒

16.8秒

19%

1024

3.1秒

8.5秒

36%

2048

3.3秒

5.2秒

63%

4096

3.2秒

4.1秒

78%

结论:随着 compress_chunk_size 增大,压缩表写入性能明显提升。当设置为4096时,性能可达到普通表的78%。

3. 生产环境迁移场景测试

在生产环境迁移场景中,使用默认的 compress_chunk_size=512 配置,压缩表COPY写入速度仅为普通表的1/3至1/5,与测试结果一致。


五、问题分析

1. 性能下降根因分析

通过进一步排查和测试,确定压缩表写入性能下降的根本原因是:compress_chunk_size 设置过小(512KB),导致在高并发COPY场景下产生严重的锁竞争。

2. 锁竞争分析

当 compress_chunk_size=512 时,每条数据都需要更频繁地进行压缩块的操作,导致:

压缩块切换频率高,产生大量锁等待

小压缩块导致压缩效率下降

高并发场景下锁竞争加剧

3. 在线参数修改限制

经测试验证,压缩表相关参数的在线修改能力如下:

参数

是否支持在线修改

说明

compresstype

支持

可通过ALTER TABLE直接修改

compress_level

支持

可通过ALTER TABLE直接修改

compress_chunk_size

不支持

需要重建表才能修改

注意:compress_chunk_size 参数不支持在线修改,如需调整需要重建表。因此在初始创建压缩表时,应根据业务场景合理设置此参数。


结论与建议

1. 测试结论

压缩表写入性能受 compress_chunk_size 参数影响显著

默认的512KB压缩块大小在高并发写入场景下性能下降明显(仅为普通表19%)

将 compress_chunk_size 调整至4096KB,性能可恢复至普通表的78%

压缩表在牺牲约22%写入性能的情况下,可获得显著的存储空间节省(具体压缩比取决于数据特征)


2. 参数设置建议

写入密集型业务:建议设置 compress_chunk_size=4096

读取密集型业务:可适当降低 compress_chunk_size 以提高压缩比

建议在测试环境充分验证后,再在生产环境部署

创建压缩表前应评估业务特点,合理设置压缩参数


3. 生产环境迁移建议

迁移前在测试环境进行充分的性能测试

根据业务特点调整压缩参数,避免直接使用默认值

监控迁移过程中的性能指标,及时发现性能瓶颈

对于特别重要的业务表,可考虑分阶段迁移,先迁移部分数据验证

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论