2016-05-16 61 views
4

的PostgreSQL在9.6版本增加了對平行聚集體的支持。的PostgreSQL 9.6平行聚集體

有了9.6,PostgreSQL引入了對大型查詢的並行執行 的初始支持。只有通過順序掃描訪問驅動 表的嚴格只讀查詢纔可以並行化。哈希 連接和嵌套循環可以並行執行,聚合(對於受支持的聚合)也可以並行執行。還有很多工作要做,但是 這已經是一組有用的功能。

  • 什麼是上面提到的支持聚合?
  • 是否有設計聚合函數允許並行機器的使用情況時,其他特殊注意事項?
+3

任何函數/總將計劃查詢時予以考慮。看到。 'pg_proc.proparallel':http://www.postgresql.org/docs/9.6/static/catalog-pg-proc.html –

回答

1

PostgreSQL 9.6 User-defined Aggregates documentation現在提到平行聚集體:

35.10.4。局部聚合

任選地,聚合函數可以支持局部聚集。部分聚合的想法是獨立地在輸入數據的不同子集上運行聚合的狀態轉換 ,然後 然後將從這些子組產生的狀態值合併到 產生與掃描產生的相同的狀態值 所有的輸入在一個單一的操作。通過讓不同的工作進程掃描表的不同部分,此模式可用於並行聚合。每個工人產生一個部分狀態值 ,最後這些狀態值被組合起來產生一個最終狀態值 。 (今後這種模式還可以用於 目的,例如在本地和遠程表組合集合; 但尚未實現)

爲了支持局部聚集,聚集體定義必須提供 一個結合功能,這需要聚集的狀態 型(代表聚集在 輸入行的兩個子集的結果)的兩個值,併產生狀態類型的新的價值,代表 什麼狀態會一直聚集在後這些組行的組合 。沒有具體說明兩組輸入行的相對順序 。這意味着它 通常無法界定爲那些對輸入行順序敏感聚集 一個有用的結合功能。標記爲「平行安全」