2017-06-15 49 views
0

嗨,我是Greenplum數據庫的新手。我知道默認優化器是遺留的,爲了激活Pivotal優化器,我們應該啓用「set optimizer = on」。傳統查詢優化器vs Pivotal查詢優化器

我想了解以下內容:

  1. 這兩個優化的
  2. 之間的主要區別爲何種類型的查詢,我們應該能夠獲得更好的性能 匹優化是什麼。

回答

1

Anuraag。

將優化器設置爲「on」可以對原始Postgres優化器進行一系列修改,以更好地處理諸如對超大型分區表,子查詢和CTE SQL(WITH語句)的查詢。還有其他正在進行的修改可以使優化程序代碼在所有類型的SQL查詢中更加模塊化和高效,但這正是最初關注的重點。我不在優化器團隊(Pivotal Data Field engineer),所以可能有其他人可以給我提供比我更深入的解答。

至於哪些查詢最受益,最好的答案是:「它取決於」:)。通常,在optimizer = on時,非常大的分區表查詢將被更高效更快地處理。與CTE查詢和其中的子選擇查詢相同。我還看到一些標準的星型模式類型查詢在optimizer = on時運行得更快。

無論哪種情況,優化器都依賴於數據庫中非常好的統計信息,因此您需要確保ANALYZE在大負載或刪除/截斷後運行。

最好的辦法是運行和優化器啓用和停止查詢(可以在會話級別設置)。數據集和數據庫模式結構的大小可能會顯示優化程序通常更快或更慢的時間,所以我會選擇適合您的特定情況的最適合的設置。我與很多Greenplum客戶合作。一些優化器設置爲默認開啓,一些設置爲關閉。找到最適合大部分查詢的默認設置,並在查詢「緩慢」運行並查看您是否獲得更好結果的情況下使用相反的設置。

我希望這能回答你的問題。

吉姆

0

對於分區表,請確保您運行,因爲PQO在根分區上,而不是葉子像分區規劃師使用統計分析根分區。