1382 字
7 分鐘
ClickHouse 系列:儲存政策(Storage Policies)與磁碟資源分層策略

當你的 ClickHouse 資料規模從 GB、TB 成長到 PB 時,如何妥善分配 SSD、HDD、甚至雲端冷儲存資源,變得至關重要。ClickHouse 透過 Storage Policies (儲存政策),提供了極為靈活的磁碟分層架構,不僅能優化查詢效能,也能大幅降低儲存成本。
Storage Policies 是什麼?
Storage Policies 是 ClickHouse 內部管理資料儲存位置與分層邏輯的配置機制。它將磁碟資源劃分為不同層級(Volumes),並根據資料大小、TTL、Merge 條件等動態將資料移動至不同層級磁碟。
你可以做到:
- 熱資料存在 SSD,冷資料自動移至 HDD 或雲端 S3。
- 根據 Data Part 大小動態調度存儲位置。
- 搭配 TTL 策略,實現資料生命週期全自動管理。
Storage Policies 結構
<storage_configuration> <disks> <disk_ssd> <path>/var/lib/clickhouse/ssd/</path> </disk_ssd> <disk_hdd> <path>/var/lib/clickhouse/hdd/</path> </disk_hdd> <disk_s3> <type>s3</type> <endpoint>https://s3.amazonaws.com/your-bucket/</endpoint> <access_key_id>YOUR_KEY</access_key_id> <secret_access_key>YOUR_SECRET</secret_access_key> </disk_s3> </disks> <policies> <tiered_policy> <volumes> <hot> <disk>disk_ssd</disk> </hot> <cold> <disk>disk_hdd</disk> <max_data_part_size_bytes>5000000000</max_data_part_size_bytes> </cold> <archive> <disk>disk_s3</disk> </archive> </volumes> </tiered_policy> </policies></storage_configuration>
磁碟分層(Volumes)設計原則
層級 | 磁碟類型 | 適用資料 | 說明 |
---|---|---|---|
Hot | SSD | 近 7 天高頻查詢資料 | 保證讀取速度與低延遲 |
Cold | HDD | 歷史數據或低頻查詢資料 | 儲存成本較低,適合冷資料 |
Archive | S3 | 歸檔資料、不常查詢但需長期保留 | 跨區域備份、儲存無上限、成本最低 |
配合 TTL 實現自動熱冷資料分層
CREATE TABLE user_logs( EventDate DateTime, UserID UInt64, Action String) ENGINE = MergeTreeORDER BY (UserID, EventDate)SETTINGS storage_policy = 'tiered_policy'TTL EventDate + INTERVAL 7 DAY TO VOLUME 'cold', EventDate + INTERVAL 30 DAY TO VOLUME 'archive';
這樣設計後:
- 近 7 天資料會在 SSD。
- 7 天到 30 天資料移動到 HDD。
- 超過 30 天資料會自動移到 S3 儲存。
觀察資料分佈情況
SELECT name AS table_name, disk_name, count() AS partsFROM system.partsWHERE active AND table = 'user_logs'GROUP BY table_name, disk_name;
能夠即時掌握資料是儲存在 SSD、HDD,還是 S3。
Storage Policies 與 MergeTree 的互動
- 新資料寫入 → Hot Volume(除非超過 Part Size 限制)。
- 背景合併 (Merge) 時會根據 Part 大小、TTL 將資料移動至下層 Volume。
- 儲存層級的選擇與分配完全由 Storage Policies 決定,不需手動干預。
儲存政策最佳實踐
- 分層設計要「能自動運作」 → 不需手動移動資料。
- 選擇適合的磁碟路徑與掛載點 → SSD 用於熱資料、HDD 為冷資料、S3 作為歷史歸檔。
- 搭配 TTL 做時間序列資料管理 → 自動清理與降層儲存。
- 監控系統.parts 與.part_log → 定期檢查 Part 移動情況與執行效能。
進階:監控 Storage Policies 實際運作情況
ClickHouse 提供了 system.storage_policies
系統表,讓你能夠隨時檢查 Storage Policies 與 Volume 配置,並了解磁碟資源的優先順序與分層邏輯。
system.storage_policies
欄位解讀
欄位名稱 | 說明 |
---|---|
policy_name | 儲存政策名稱。 |
volume_name | 所屬 Volume 名稱。 |
volume_priority | Volume 優先順序,數字越小優先度越高 (0 最優先)。 |
disks | 該 Volume 內包含的磁碟列表。 |
volume_type | Volume 類型 (JBOD, SINGLE_DISK, UNKNOWN)。 |
max_data_part_size | 該 Volume 可儲存的最大 Data Part 大小 (0 代表無上限)。 |
move_factor | 當 Volume 剩餘空間不足 (Free Space Ratio 超過此值) 時,ClickHouse 會將資料移動到下一個 Volume。 |
prefer_not_to_merge | 是否避免在該 Volume 進行 Merge(理論上不建議啟用)。 |
perform_ttl_move_on_insert | 插入資料時若符合 TTL 規則是否立即執行移動。 |
load_balancing | 當 Volume 中包含多顆磁碟時,資料寫入的負載平衡策略(ROUND_ROBIN 或 LEAST_USED)。 |
檢查儲存政策與 Volume 配置
SELECT policy_name, volume_name, volume_priority, disks, volume_type, max_data_part_size, move_factor, load_balancingFROM system.storage_policiesWHERE policy_name = 'tiered_policy';
結語
ClickHouse 的 Storage Policies 不僅僅是磁碟資源管理工具,更是「大規模數據儲存成本優化策略」的核心武器。只要正確設計,就能讓你的 ClickHouse 叢集具備自動儲存分層、效能與成本兼顧的絕佳特性。
ClickHouse 系列持續更新中:
- ClickHouse 系列:ClickHouse 是什麼?與傳統 OLAP/OLTP 資料庫的差異
- ClickHouse 系列:ClickHouse 為什麼選擇 Column-based 儲存?講解 Row-based 與 Column-based 的核心差異
- ClickHouse 系列:ClickHouse 儲存引擎 - MergeTree
- ClickHouse 系列:壓縮技術與 Data Skipping Indexes 如何大幅加速查詢
- ClickHouse 系列:ReplacingMergeTree 與資料去重機制
- ClickHouse 系列:SummingMergeTree 進行資料彙總的應用場景
- ClickHouse 系列:Materialized Views 即時聚合查詢
- ClickHouse 系列:分區策略與 Partition Pruning 原理解析
- ClickHouse 系列:Primary Key、Sorting Key 與 Granule 索引運作原理
- ClickHouse 系列:CollapsingMergeTree 與邏輯刪除的最佳實踐
- ClickHouse 系列:VersionedCollapsingMergeTree 版本控制與資料衝突解決
- ClickHouse 系列:AggregatingMergeTree 實時指標統計的進階應用
- ClickHouse 系列:Distributed Table 與分布式查詢架構
- ClickHouse 系列:Replicated Tables 高可用性與零停機升級實作
- ClickHouse 系列:與 Kafka 整合打造即時 Data Streaming Pipeline
- ClickHouse 系列:批次匯入最佳實踐 (CSV、Parquet、Native Format)
- ClickHouse 系列:ClickHouse 與外部資料源整合(PostgreSQL)
- ClickHouse 系列:如何提升查詢優化?system.query_log 與 EXPLAIN 用法
- ClickHouse 系列:Projections 進階查詢加速技術
- ClickHouse 系列:Sampling 抽樣查詢與統計技術原理
- ClickHouse 系列:TTL 資料清理與儲存成本優化
- ClickHouse 系列:儲存政策(Storage Policies)與磁碟資源分層策略
- ClickHouse 系列:表格設計與儲存優化細節
- ClickHouse 系列:ClickHouse 系列:整合 Grafana 打造可視化監控
- ClickHouse 系列:APM 日誌分析平台架構實作 (Vector + ClickHouse)
- ClickHouse 系列:IoT 巨量感測資料平台設計實戰
- ClickHouse 系列:與 BI 工具整合(Power BI)
- ClickHouse 系列:ClickHouse Cloud 與自建部署的優劣比較
- ClickHouse 系列:資料庫安全性與權限管理(RBAC)實作
ClickHouse 系列:儲存政策(Storage Policies)與磁碟資源分層策略
https://vicwen.app/posts/clickhouse-storage-policies/