
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),僅供參考