
Apache Doris 压缩算法怎么选ZSTD、LZ4、Snappy 配置指南【免费下载链接】dorisApache Doris is a real-time analytics and hybrid search database for AI agents.项目地址: https://gitcode.com/GitHub_Trending/doris/doris在 Apache Doris 中压缩算法的选择直接决定两个数字数据落到磁盘占多少空间以及查询读回时多花多少毫秒。生产上可选的其实是三选一——ZSTD、LZ4、Snappy一句话原则是为存储成本选 ZSTD为查询速度选 LZ4。下文先给出三者的定位再按集群默认 → 单表覆盖 → 效果验证讲配置路径最后给两条可执行的判断规则。Doris 压缩算法对比三种定位各占一席Doris 的列存按数据块粒度压缩一列数据先编码再经过压缩编解码器写入磁盘底层接口在 be/src/util/block_compression.h。三种算法的差异在于压缩率与 CPU 开销的取舍算法压缩率档位压缩速度解压速度典型定位ZSTD高约 1.53 倍中中快大体积、少更新的数据LZ4中约 1.21.8 倍快快热数据、高频查询Snappy低约 1.11.5 倍快快低压缩性的日志类数据ZSTD 是省存储的主力。压缩率明显高于另外两者且数据量越大优势越明显代价是压缩时 CPU 开销最高不适合毫秒敏感的实时写入链路更适合历史分区、离线报表这类一次写入、多次读取的位置。LZ4 是查询速度的均衡解。压缩和解压都快解压开销在多数场景可忽略。点查 QPS 高、延迟敏感、写入端 CPU 已经吃紧时LZ4 是热数据分区的首选。Snappy 是低压缩性数据的兜底。压缩率三者最低但速度不输 LZ4工程上最省心。日志、文本、随机序列这类本身可压缩性差的数据硬上 ZSTD 不会多省多少空间只会多烧 CPUSnappy 更合适。storage_compression_method 配置默认值、单表覆盖、验证配置分三层后者覆盖前者按顺序做集群默认在 conf/be.conf 中指定新数据的全局默认算法不配置时默认为 LZ4。# conf/be.conf可选 ZSTD / LZ4 / SNAPPY storage_compression_method ZSTD单表覆盖建表时用PROPERTIES里的compression指定单表算法优先级高于集群默认可选枚举可对照 gensrc/proto/segment_v2.proto含 ZSTD、LZ4、LZ4F、ZLIB、SNAPPY、LZ4HC 等。CREATE TABLE user_behavior ( user_id BIGINT, action STRING, event_time DATETIME ) PROPERTIES (compression LZ4);效果验证数据落盘后用information_schema.partitions_meta算实际压缩比用数字代替感觉。SELECT table_name, ROUND(SUM(data_size) / SUM(data_size_compressed), 2) AS ratio FROM information_schema.partitions_meta GROUP BY table_name ORDER BY ratio DESC;⚠️ 压缩算法只作用于新写入的数据。存量数据不会自动重压需要重建分区或备份恢复后重写。Doris 压缩率选型只看两个变量不用画流程图按顺序问两个问题更新频率同一分区是否每天被反复修改一次写入、基本不再更新 →ZSTD用 CPU 换空间。频繁 update/delete数据长期半热 →LZ4重写 segment 的开销要尽量低。查询压力这张表的读 QPS 是否上千且延迟敏感是 →LZ4解压几乎不占 CPU读路径上限更稳。否报表、离线分析 →ZSTD解压多花几毫秒省下的空间更值。数据本身可压缩性差日志、随机串 →SnappyZSTD 在这里烧 CPU 也换不来空间。拿不准就用 LZ4它贴近 Doris 的默认方向两边都不会错得太远。真实场景与上线前避坑案例示例数据某电商的用户行为日志表约 20TBSnappy 下实测压缩比 1.3 倍切 ZSTD 并重建分区后升到约 2.7 倍存储占用减少约一半夜间报表窗口 CPU 占用上升但整体耗时反而缩短约 15%IO 减少所致。这组数字仅供量级参考实际比率完全取决于你的数据可压缩性。避坑清单改算法不追溯存量必须重写分区选在业务低峰执行。重建前先备份新算法不符合预期如 ZSTD 把导入 CPU 打满可以回退。不要全集群一种算法热分区 LZ4、冷分区 ZSTD按表配置比全局默认更稳。切换前抽样测试以partitions_meta里的真实比率做决策而不是表格里的估算值。上线前检查清单conf/be.conf的storage_compression_method与预期默认一致需要差异化的表已设PROPERTIES。抽样 12 张代表表在partitions_meta核对实际压缩比。存量分区备份已完成重建排在低峰窗口。上线后观察 24 小时导入 CPU 与查询 P99并保留回退方案。【免费下载链接】dorisApache Doris is a real-time analytics and hybrid search database for AI agents.项目地址: https://gitcode.com/GitHub_Trending/doris/doris创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考