資料與儲存 2026 年 6 月 8 日

2026-06-08 — ClickHouse 26.5 ORDER BY LIMIT 加速、JOIN 技術解析、DuckDB Iceberg V3

primary=https://clickhouse.com/blog/clickhouse-release-26-05 primary=https://clickhouse.com/blog/clickhouse-fast-joins primary=https://duckdb.org/2026/05/29/new-iceberg-features.html

ClickHouse 26.5 發布:ORDER BY LIMIT 下推 JOIN 加速 20 倍,新增 filesystem 函數與 Web Terminal

ClickHouse Blog · 2026-06-01

ClickHouse 26.5 於 2026-06-01 正式發布,包含 38 項新功能、51 項效能優化與 224 個 bug 修復。本版最顯著的效能突破是查詢計劃器在 ORDER BY...LIMIT 通過 JOIN 節點時的下推優化,以及 GROUP BY...LIMIT 的提前終止策略。

核心改動

ORDER BY...LIMIT 下推 JOIN:當排序鍵依賴 JOIN 保留側(preserved side)時,查詢計劃器現在將排序與限制操作推入 JOIN 之前執行,大幅縮減 JOIN 的輸入規模。實測加速 20.4 倍,記憶體消耗降低約 175 倍。

GROUP BY...LIMIT(無 ORDER BY):識別到不需要全量 aggregation 結果的模式後,限制 hash table 大小並提前終止聚合。實測加速 11.9 倍,記憶體降低約 185 倍。

新功能方面:

  • filesystem() 表函數:以 SQL 查詢本機檔案系統的元數據(size、mtime、permissions),適合資料目錄審計
  • Web Terminal(實驗性):透過 HTTP interface 直接在瀏覽器中使用 clickhouse-client,無需安裝客戶端
  • Multi-path SQL/JSON:JSON_VALUE / JSON_QUERY 可接受路徑 tuple 或陣列,一次解析 JSON 回傳多個欄位
  • Negative LIMIT BY:負值 LIMIT BY 從分組尾端取行,補全原有的「取前 N」語義
  • url_base 設定:為 url() 表函數定義基礎 URL,避免重複輸入前綴

影響範圍

ORDER BY LIMIT + JOIN 的下推優化對 OLAP 報表查詢影響最大——典型的「取銷售額 top 100 商品詳情」模式(JOIN 商品維度表後 ORDER BY + LIMIT)可直接受益。升級時無 breaking change,26.5 與前版 wire protocol 相容。filesystem() 函數需要 ClickHouse server 對本機路徑有讀取權限,容器部署時需注意 volume mount 設定。

原始來源:ClickHouse Release 26.5


ClickHouse JOIN 加速技術解析:統計重排、Runtime Filter 與延遲列複製讓兩年效能提升 26 倍

ClickHouse Blog · 2026-06-03

ClickHouse 工程部落格在 2026-06-03 發布技術文章,回顧過去兩年(v22.4 到 v26.4)JOIN 效能提升 26 倍的歷程,重點介紹三個關鍵優化:統計式 JOIN 重排、Runtime Filter 與延遲列複製。

核心改動

統計式 JOIN 重排(Statistics-based join reordering):查詢計劃器讀取列的 cardinality 估計值,自動選擇最小化中間結果的 JOIN 順序。以 TPC-H 六表 JOIN 為例:

JOIN 順序執行時間記憶體
優化器自動選擇(最優)2.7 秒3.9 GB
人工次優順序3903.7 秒99 GB

Runtime Filter:在 hash table 構建階段提取 bloom filter 或 min/max 值,在 probe 側實際查表前先過濾不可能匹配的行。三表 JOIN 測試:2.1 倍加速、記憶體降低 7 倍。

延遲列複製(Lazy column replication):JOIN 輸出中重複出現的字串列(如 dimension 表的國家名稱)改用緊湊字典表示,不實際複製字串 payload。含重複字串列的 JOIN 查詢加速約 1.9 倍。

影響範圍

統計式重排依賴準確的列統計資訊——需定期執行 ANALYZE TABLE 或開啟自動統計收集。Runtime filter 在選擇性高的過濾欄位上效果最佳,對低選擇性欄位收益有限。以上優化均已合入 26.4/26.5 穩定版,不需要額外設定即可生效。

原始來源:ClickHouse: How we became fast at joins


DuckDB 1.5.3 Iceberg 新功能:MERGE INTO、ALTER TABLE、Partition Transform 與 Iceberg V3 支援

DuckDB News · 2026-05-29

DuckDB 1.5.3(2026-05-29 發布)大幅擴展了 Apache Iceberg 整合能力,新增 MERGE INTO upsert 語義、完整的 ALTER TABLE schema evolution、bucket/truncate partition transform,並率先支援 Iceberg V3 規格

核心改動

MERGE INTO:讓 DuckDB 可對 Iceberg table 執行以 merge-on-read 語義實作的 upsert,不需要 primary key 定義。WHEN MATCHED / WHEN NOT MATCHED 子句支援每行獨立決定 INSERT、UPDATE 或 DELETE。

ALTER TABLE(Schema Evolution):支援欄位重命名、新增/刪除欄位,以及設定 format version。Iceberg 的 schema evolution 是無資料重寫的元數據操作,DuckDB 現在可直接發起這些操作而不需依賴 Spark 或 Flink。

Partition Transforms

  • bucket(N, col):將值 hash 到 N 個桶,均勻分散資料
  • truncate(W, col):字串取前 W 字元,數值向下取整至 W 的倍數

Iceberg V3 支援(主要新增):

  • VARIANTTIMESTAMP_NS 資料型別
  • 欄位預設值(column default values)
  • Binary deletion vectors:以緊湊 Puffin 檔案取代 V2 的 Parquet 刪除檔,讀取效率更高
  • Row lineage tracking:追蹤行的來源變更歷程

影響範圍

MERGE INTO 與 ALTER TABLE 填補了 DuckDB 在 Iceberg 作為寫入端的缺口,先前只能讀取。配合 DuckLake v1.0,DuckDB 已可在單機上完成完整的 lakehouse ETL 流程,不需啟動 Spark cluster。V3 deletion vectors 需要 Iceberg catalog 支援,AWS Glue、Snowflake Open Catalog 均已跟進。

原始來源:DuckDB: New DuckDB-Iceberg Features in v1.5.3


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