Postgresql

Postgresql 分區查詢的好處

  • April 13, 2022

我正在嘗試將分區過程應用於我的 Postgresql 數據庫上的一些大表,我已經閱讀了文件和許多關於此的文章,但找不到這個問題的答案。

如果我在例如日期欄位上使用範圍分區,是否有必要使用此欄位進行查詢以獲得分區過程的好處,或者即使我使用分區欄位中未包含的其他欄位進行查詢,我也可以這樣做健康)狀況 ?

謝謝

要利用表分區,選擇查詢必須至少包含分區鍵,這樣優化器將執行分區修剪並掃描與您的謂詞相對應的分區。

EXPLAIN SELECT count(*) FROM measurement WHERE logdate >= DATE '2008-01-01';
                                   QUERY PLAN
-------------------------------------------------------------------​----------------
Aggregate  (cost=37.75..37.76 rows=1 width=8)
  ->  Seq Scan on measurement_y2008m01  (cost=0.00..33.12 rows=617 width=0)
        Filter: (logdate >= '2008-01-01'::date)

性能不是分區的唯一(甚至可能不是主要)優勢。例如,分區表上的索引掃描通常會比未分區表上的稍慢,即使您可以從分區修剪中受益,因為計劃時間會增加。

分區的許多優點不需要分區修剪:

  • 通過刪除分區進行批量刪除
  • 改進的自動真空性能
  • 分區聚合或連接帶來的速度提升

就在上週,當我不得不處理 3TB 表中的數據損壞時,如果對錶進行分區,我的工作會更容易。

引用自:https://dba.stackexchange.com/questions/310866