資料與儲存 2026 年 8 月 6 日

2026-08-06 — ClickHouse 用 cgroup 動態節流解決 Postgres WAL 積壓,DuckDB 突破 4 萬星回顧版本進展

primary=https://clickhouse.com/blog/wal-backpressure-clickhouse-managed-postgres primary=https://duckdb.org/2026/08/05/github-40k-stars.html primary=https://duckdb.org/2026/03/09/announcing-duckdb-150

WAL 積壓恐讓 Postgres Panic:ClickHouse Managed Postgres 用 cgroup 動態卡寫入速度

clickhouse.com · 2026-08-05

原本的問題

ClickHouse 於 2026 年 8 月 5 日在官方部落格說明,旗下 Managed Postgres 服務近期導入一套稱為「WAL backpressure」的寫入節流機制,用來處理 Postgres WAL(Write-Ahead Log)segment 堆積導致磁碟寫滿的問題。Postgres 的 WAL segment 必須先歸檔(archive)到物件儲存,才能被刪除。當寫入吞吐量超過歸檔速度時,WAL 會持續累積直到磁碟被塞滿,而磁碟一旦寫滿,Postgres 會直接觸發 panic 並讓整個實例關閉。

這在代管服務裡是最壞情況,因為使用者無法自行處理磁碟空間問題。文章指出,在多租戶環境下,單一租戶的寫入尖峰很容易讓歸檔速度跟不上,歸檔端本身也可能因網路或物件儲存限速而暫時變慢。傳統做法是靠監控告警,等磁碟逼近上限才由人工介入,但反應速度不足以應付持續運行的服務。

採用的方法

ClickHouse 的解法是寫一支 systemd timer,每 15 秒檢查一次待歸檔的 WAL segment 數量,再依堆積深度套用不同等級的寫入速度上限,透過 cgroup v2 的 I/O controller 實作。文章給出的對照表以 500 MB/s 磁碟為例:

待歸檔 WAL Segment 數寫入速度上限範例(500 MB/s 磁碟)
100基準的 80%400 MB/s
500基準的 50%250 MB/s
1,000基準的 20%100 MB/s

為了不誤傷歸檔流程本身,系統把 cgroup 拆成兩組:「免疫組」涵蓋 archiver、checkpointer、WAL writer 與 logger,維持全速運作;「節流組」只包含用戶端 backend 連線,寫入被限速但讀取不受影響。程序分類的方式是檢查 process title 字串。要讓 Postgres 的 systemd unit 能建立並委派子 cgroup,設定檔需加上 Delegate=yes

實際效果

ClickHouse 在 m7i.2xlarge EC2 執行個體、Ubuntu 24.04、Postgres 16 的環境下驗證,磁碟為 provisioned throughput 500 MB/s 的 gp3 volume。測試方式是人為把歸檔速度限制到 4 MB/s,製造嚴重的歸檔落後情境。結果顯示節流機制讓磁碟使用率全程維持在 33% 以下,等歸檔恢復正常速度後,系統自動解除限速,整個過程沒有人工介入。

原始來源:ClickHouse Blog - What is WAL backpressure, and why does ClickHouse Managed Postgres need it?


GitHub 星數衝破 4 萬,DuckDB 這一年半發布了哪些版本

duckdb.org · 2026-08-05

DuckDB 團隊於 2026 年 8 月 5 日在官方部落格宣布,專案在 GitHub 上的星數正式突破 40,000,距離 2025 年夏天跨過 30,000 顆星的里程碑又往前一步。這篇文章本身偏向回顧性質,重點放在版本進展、下載成長與社群活動,技術細節不多。

網站流量與下載數字是文中少數具體提到的資料:官網每月不重複訪客超過 800 萬,較去年同期成長逾一倍;PyPI 月下載量也從先前公布的 2,000 萬成長到超過 5,000 萬,同樣是倍增;透過 extension 下載產生的月流量則超過 2 PB。

版本方面,這段期間 DuckDB 發布了首個長期支援版本 1.4.0,以及隨後的 1.5.0。根據 1.5.0 的正式發布文,該版本把 VARIANT 型別與 GEOMETRY 型別從擴充功能收進核心:VARIANT 以二進位格式儲存半結構化資料,取代純文字 JSON 逐次解析的開銷;GEOMETRY 改用業界標準的 little-endian WKB 編碼並支援自動 shredding,可讓儲存體積縮小約 3 倍。同一版本也引入非阻塞 checkpoint,使 TPC-H SF100 的吞吐分數從 246,115.60 提升到 287,122.97,約 17% 改善;開發期間累積超過 6,500 次 commit、近 100 位貢獻者參與。

40k 里程碑文章也提到 DuckLake 1.0——官方形容為「SQL-as-a-lakehouse 的正式生產格式」——以及讓多個 DuckDB 實例互相溝通、支援多寫入者的 Quack remote protocol。社群面則列出 Amsterdam、Berlin、London 三地的實體聚會與一場 Developer Meeting,第 7 屆 DuckCon 是至今規模最大的一次,並提供線上直播。

原始來源:DuckDB Blog - Thank You for 40,000 Stars on GitHub · 補充資料:Announcing DuckDB 1.5.0


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