資料與儲存 2026 年 4 月 30 日

2026-04-30 — ClickHouse 多版本效能對比、Redis CRDB Active-Active 架構、LLM 推理兩階段剖析

clickhousectl:本地多版本並行測試,DISTIN…

clickhousectl:本地多版本並行測試,DISTINCT 查詢提速 5×、Parquet 元資料快取

ClickHouse Blog (Mark Needham) · 2026-04-29

ClickHouse 官方 CLI 工具 clickhousectl 新增本地多版本並行執行能力,允許工程師在同一台機器上同時啟動不同版本的 ClickHouse 實例,直接對比查詢效能。

基本操作流程

# 安裝
curl https://clickhouse.com/cli | sh

# 安裝特定版本
chctl local install 25.12
chctl local install 26.3

# 啟動(自動分配未衝突的端口)
# 在衝突時自動遞增 port

# 跨版本複製資料表結構(無需手動 DDL)
# 使用 --time 旗標量測查詢時間

DISTINCT 低基數欄位效能(v26.1 改進)

版本平均查詢時間
ClickHouse 25.12~76ms
ClickHouse 26.3~15ms

針對低基數欄位的 DISTINCT 查詢,v26.1 引入的最佳化帶來約 5× 加速。

Parquet 元資料快取(v26.3 引入)

新機制快取 Parquet 檔案的 footer 元資料(含結構、row group、統計資訊),使用 ETag 進行快取驗證:

場景25.1226.3
初次 S3 查詢~11–12 秒~11–12 秒
重複查詢(快取命中)~8–9 秒~1–2 秒

快取命中時約 5× 加速,適合頻繁存取相同 S3 Parquet 資料集的工作負載。

原始來源:ClickHouse Blog — Comparing ClickHouse versions with clickhousectl


Active-Active vs Active-Passive 資料庫架構:CRDB、CRDT 與 RTO/RPO 取捨

Redis Blog (Jim Allen Wallace) · 2026-04-29

Redis 工程部落格詳細比較兩種高可用資料庫架構的技術機制,著重 Redis 本身的 Active-Active 實作——Conflict-free Replicated Database(CRDB)。

架構差異

Active-Passive:單一主節點處理所有寫入;備援節點閒置,透過心跳偵測觸發提升(promotion)流程。主要弱點:提升步驟引入 RTO(秒至分鐘),且 2.5% 的多可用區資料庫在一次協定錯誤中失效;「冷快取問題」在提升時使備援節點無法處理生產流量(2012 GitHub 事件先例)。

Active-Active:所有節點同時接受讀寫;消除提升步驟,RTO 更低;但需要衝突解析機制。

Redis CRDB 的衝突解析

Redis Active-Active 透過 CRDB 實作,在全球多個叢集之間建立雙向網狀複製(bi-directional mesh replication),各叢集使用資料型別特定的 CRDT 語義:

  • 計數器:交換律遞增,並行遞增都計入
  • 集合:Add-wins 語義(並行 add 優先於並行 remove)
  • Hash:欄位級別獨立解析(不同欄位的並行更新不衝突)

一致性模型為強最終一致性(Strong Eventual Consistency, SEC),無需共識協定(consensus protocol)。可選用因果一致性(causal consistency),但會增加網路與記憶體負擔。

可用性指標參考

可用性年停機上限月停機上限
99.9%~8.76 小時~43.8 分鐘
99.99%~52.6 分鐘~4.4 分鐘
99.999%~5.26 分鐘~26 秒

原始來源:Redis Blog — Active-Active vs Active-Passive


LLM 推理兩階段剖析:Prefill 算力瓶頸與 Decode 記憶體頻寬瓶頸

Redis Blog · 2026-04-28

此文從儲存與推理基礎設施的角度,深入分析 LLM 推理的 Prefill 與 Decode 兩個不同瓶頸,以及各自的最佳化策略。

Prefill 階段

Prefill 並行處理整段輸入提示,是算力(compute-bound)瓶頸。由於 attention 機制的複雜度,提示長度加倍大致使 attention 工作量翻四倍(quadratic scaling)。效能指標為 TTFT(Time to First Token)。Prefill 輸出 KV cache,後者作為 Decode 的起點。

Llama 3.1 70B 實測:32,768 tokens 約 472ms TTFT;122,880 tokens 約 2.2 秒。

Decode 階段

Decode 每次只生成一個 token,受記憶體頻寬(memory-bandwidth-bound)限制。每個 decode 步驟必須讀取整個累積的 KV cache,隨著輸出增長而持續膨脹。效能指標為 ITL(Inter-Token Latency)。

最佳化策略對比

階段策略效果
PrefillFlashAttention重組計算模式,相同輸出,更少計算
PrefillSemantic Caching(Redis LangCache)相似查詢命中快取,跳過整個推理
DecodeSpeculative DecodingLlama 3.3 70B 上 3.55× 加速
DecodeINT4 KV Cache 量化LLaMA3-8B decode 延遲降低 57%
DecodeW8A8 量化decode 改善 40–60%

工作負載分類

RAG 應用(長輸入、短輸出)以 Prefill 為瓶頸;程式碼生成(短輸入、長輸出)以 Decode 為瓶頸;聊天機器人兩者皆需關注。「一個最佳化鮮少同時改善兩個階段」——Prefill 請求甚至可能阻塞 Decode 串流,導致活躍使用者體驗到輸出停頓。

原始來源:Redis Blog — Prefill vs Decode: LLM Inference Phases Explained


End of article
0
Would love your thoughts, please comment.x
()
x