pg_clickhouse 四月更新:JSONB 推下、時間函數伺服器端執行、HTTP 串流降記憶體 86%
ClickHouse Blog · 2026-04-24
pg_clickhouse 是讓 PostgreSQL 作為 ClickHouse 外部表格前端的擴充,透過 Foreign Data Wrapper(FDW)機制將查詢下推(pushdown)至 ClickHouse 執行。2026 年 4 月的版本帶來三個重要的查詢效能與記憶體優化。
JSONB 存取子推下(v0.1.10)
先前 JSONB 屬性的過濾只能在 PostgreSQL 側執行,即先從 ClickHouse 拉回所有資料再過濾。v0.1.10 讓 WHERE、ORDER BY、HAVING 子句中的 JSONB 存取子直接映射至 ClickHouse 的 sub-column 語法,在伺服器端完成過濾:
>>運算子(返回 text)直接轉為 ClickHouse sub-column 存取->運算子(返回 JSONB)加入 JSON 轉換後推下jsonb_extract_path()、jsonb_extract_path_text()同樣支援推下,允許巢狀值存取
SQL 值函數推下(v0.2.0)
v0.2.0 加入對 CURRENT_DATE、CURRENT_TIMESTAMP、clock_timestamp() 等日期時間函數的推下支援,這些函數在 ClickHouse 側執行時遵循 PostgreSQL 工作階段的時區設定,並正確與 date_part()、date_trunc() 組合使用。同版本還新增陣列操作推下:array_cat → arrayConcat、array_to_string → arrayStringConcat、string_to_array → splitByString。
HTTP 結果集串流(v0.1.10)
HTTP 驅動層改為串流模式,預設緩衝約 50 MB,而非將整個結果集載入記憶體後再返回。以 NYC 計程車資料集的測試為例:
- 優化前:601.8 MiB
- 優化後:86 MiB 以下
查詢速度基本持平,但記憶體峰值顯著下降,對大型查詢結果尤為重要。
Redis 客戶端函式庫原生 OpenTelemetry 指標:七組可觀測性維度同步支援三大語言
Redis Blog · 2026-04-24
Redis 宣布 redis-py v7.3.0、go-redis v9.18.0、node-redis v5.12.0 同步加入原生 OpenTelemetry 指標支援,填補伺服器端監控看不到的客戶端行為盲點,包括連接池壓力、請求佇列延遲與重試行為。
七組指標分組
指標按功能分為七組,預設只啟用 resiliency 與 connection-basic:
| 分組 | 預設 | 主要指標 |
|---|---|---|
| resiliency | 啟用 | 錯誤計數、伺服器維護通知 |
| connection-basic | 啟用 | 閒置/活躍連接數、連接時間 |
| connection-advanced | 停用 | 連接池等待時間、已關閉連接總數 |
| command | 停用 | 命令延遲(db.client.operation.duration) |
| client-side-caching | 停用 | 快取命中率、逐出計數 |
| pubsub | 停用 | 訂閱/發布統計 |
| streaming | 停用 | Stream 訊息處理延遲 |
命名慣例
標準 OTel 語意慣例指標:
db.client.operation.durationdb.client.connection.count
Redis 私有命名空間指標(redis.client.*):
redis.client.errors(含 internal/user-visible 分類)redis.client.maintenance.notificationsredis.client.csc.requests/redis.client.csc.evictions
初始化範例(Python)
from redis.observability import enable_client_observability
enable_client_observability(
metrics_groups=["resiliency", "connection-basic", "command"]
)停用時開銷 <1%,按需逐步加入更多分組。社群提供的 Grafana 儀表板 可直接使用。
原始來源:Redis Blog — Native OpenTelemetry metrics for Redis client libraries