
Apache Doris 壓縮算法怎么選三步落地存儲省 40%【免費下載鏈接】dorisApache Doris is a real-time analytics and hybrid search database for AI agents.項目地址: https://gitcode.com/GitHub_Trending/doris/doris季度復盤存儲賬單漲了 30%BE 節點容量告警又響了。翻遍集群配置才發現所有表還在裸跑默認壓縮。好消息是Apache Doris 壓縮算法選型其實只要改一個 FE 參數 建表時加一行 PROPERTIES熱表切 LZ4、歸檔表切 ZSTD存儲普遍能再省 20%~40%。三種算法一句話記住它們的脾氣先別背參數記三個形象ZSTD 像壓縮餅干——同樣的空間裝下最多的貨代價是制作壓縮時多花點力氣。技術事實它是三者中壓縮率最高的算法解壓速度與壓縮等級解耦等級調高只多花寫入 CPU不影響查詢側。LZ4 像快遞閃送——東西原樣快進快出幾乎不占你精力。技術事實LZ4 壓縮解壓都是 O(n) 線性速度寫放鏈路里 CPU 開銷最低代價是壓縮率平平。Snappy 像臨時便簽——隨手一貼撕下來也不費勁。技術事實面向小塊內存數據設計單塊 256KB 一次壓完不追求壓縮率追求的是零負擔。算法壓縮率壓縮/解壓速度內存占用典型場景ZSTD最高壓縮中等解壓快中冷數據歸檔、歷史分區LZ4中等極快低實時寫入、高頻查詢熱表Snappy較低快極低臨時表、中間結果源碼細節Doris 支持的壓縮類型枚舉定義在 gensrc/thrift/AgentService.thrift 的 TCompressionType 中SNAPPY、LZ4、LZ4F、LZ4HC、ZLIB、ZSTD建表時寫哪個名字底層就路由到對應編解碼器。寫路徑細節LZ4HC 的等級由 BE 參數LZ4_HC_compression_level默認 9控制Snappy/LZ4 按 256KB 的塊粒度壓縮定義見 be/src/common/config.cpp。按你的場景選別按參數選如果你是實時接入的熱表——Kafka 流式導入、寫入后馬上被查詢——選 LZ4。它壓縮解壓都快寫放大和查詢延遲都低壓縮率稍差的那點空間用 SSD 補比用 CPU 補劃算。如果你是歷史歸檔的冷表——月分區、季報表寫完基本只讀——選 ZSTD。這類數據查詢頻次低壓縮多花的 CPU 攤到查詢里幾乎無感而壓縮率能比 LZ4 再壓出一截賬單立省。如果你是臨時表和中間結果——跑批產出、跑完即刪——選 Snappy 甚至 NO_COMPRESSION。數據生命周期以小時計省下的那點空間還沒進賬單就沒了別讓壓縮白白吃掉 CPU。拿不準用自己的一真實表跑一把倉庫自帶的 benchmark別拍腦袋# 編譯 be/benchmark 后對真實數據頁做編解碼基準 ./doris_benchmark --benchmark_filterPlainPage/Compress五分鐘改完配置第一步改全局默認。壓縮默認值是 FE 側配置改這一行、重啟 FE之后新建的表就全部走 ZSTD# conf/fe.conf default_compression_type ZSTD第二步表級覆蓋。熱表單獨指定 LZ4建表時加一個 PROPERTIES 即可粒度到表不跟全局搶CREATE TABLE user_behavior ( user_id BIGINT, action STRING, event_time DATETIME ) PROPERTIES (compression LZ4);第三步驗證效果。查 information_schema 里每列的壓縮前后字節數壓縮比一目了然SELECT table_name, column_name, compressed_data_bytes, uncompressed_data_bytes, uncompressed_data_bytes / compressed_data_bytes AS ratio FROM information_schema.COLUMNS_DATA_SIZES WHERE database_name analytics_db ORDER BY ratio;字段說明compressed_data_bytes是落盤字節數uncompressed_data_bytes是解壓后字節數兩者比值即實際壓縮比——拿這個數和選算法前的預估對比驗證 ZSTD/LZ4 是否真省了空間。一個容易踩的坑改壓縮參數只對之后新寫入的數據生效存量 segment 保持原樣segment 是自描述的。要讓老數據也換算法得走表重建或分區重寫別指望改個配置就回縮。更多參數說明可查 Apache Doris 官方文檔 的 Configuration 一節。上線前先做這三件事先做快照備份。對目標庫執行BACKUP DATABASE ... TO ...壓縮算法變更一旦要回滾走restore比重導業務數據快得多——這是你的回滾方案。挑低峰期執行。重建分區或重寫數據會同時產生額外的壓縮 CPU 和 IO 寫放大高峰期做等于把導入和查詢一起拖慢凌晨窗口執行白天再驗證。驗證效果要拿數說話。對比兩個指標存儲量比值壓縮前后data size之比ZSTD 通常落在 0.6~0.8和查詢 P99 延遲變化——壓縮率沒提多少但 P99 漲了說明算法選重了回退即可。?【免費下載鏈接】dorisApache Doris is a real-time analytics and hybrid search database for AI agents.項目地址: https://gitcode.com/GitHub_Trending/doris/doris創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考