Postgresql
Postgresql 分區查詢的好處
我正在嘗試將分區過程應用於我的 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 表中的數據損壞時,如果對錶進行分區,我的工作會更容易。