并行方式全表掃描功能已提交 PG 9.6 版主干代碼

jopen 9年前發布 | 6K 次閱讀 PG

以下博文翻譯自PostgreSQL主要代碼貢獻人員之一Robert Haas的博客(詳情可瀏覽:http://www.postgresql.org/community/contributors/),同時他也是并行方式全表掃描功能的主要開發人員, 原文地址:http://rhaas.blogspot.com/2015/11/parallel-sequential-scan-is-committed.html (Blogspot現為Google旗下網站,得KX上網)


我以前建議過將并行全表掃描功能加入至PostgreSQL 9.5中,但未實現。然而,今天我很高興地向各位通報 我已經將第一版本的并行掃描功能提交至PostgreSQL的開發主分支中,我們確認它將會包含在將要發布的9.6版本中。

為PostgreSQL增加并行查詢功能,目前這只是第一步,它也是我長久以來的一個夢想,我已為此工作了好幾年了, 最早真正開發時是在9.4版本的開發期間,那時我主要是開發了一些后臺動態進程和動態共享內存;接著在9.5版本 期間,我又增加了很多有關并行機制的底層基本加松的開發,以及其他包含在提交的補丁的內容。下面我想說提交的 主要內容明細和下一步還準備要開發的工作和大家溝通一下。

在開始之前,我想首先將這些榮譽給一些應該得的人。首先,Amit Kapila為這個項目中貢獻了巨大的幫助。主要是由 Amit和我寫了這個功能的大部分代碼,這些代碼經過涵蓋在最近幾年多次提交的補丁中。我們倆也寫了大量的沒有包含在補丁 中的代碼。第二,我想感謝Noah Misch,在項目早期階段,在我被一些問題給繞得暈頭轉向時,他給了我很大的幫助;第三,我想向整 向PostgreSQL社區的成員,尤其是所有幫助我進行代碼審核、功能測試、提出改進意見以及在很多其他方面提供幫助而最終 使用這個功能得以實現的人們。

最為重要的是,我要感謝EnterpriseDB公司,沒有EnterpriseDB公司管理上的支持,尤其是來自Tom Kincaid和Marc Linster的支持, 也就不可能讓我和Amit有大量的時間開發并最終完成這個項目。同樣地,沒有我在EnterpriseDB公司的團隊的支持,我們的項目也 不可能現在完成,當我忙于項目開發時,我的同事們耐心地幫助我處理了其他的問題。謝謝所有的人。

好了,現在我們來看一下測試效果:

rhaas=# \timing
Timing is on.
rhaas=# select * from pgbench_accounts where filler like '%a%';
 aid | bid | abalance | filler
-----+-----+----------+--------
(0 rows)

Time: 743.061 ms
rhaas=# set max_parallel_degree = 4;
SET
Time: 0.270 ms
rhaas=# select * from pgbench_accounts where filler like '%a%';
 aid | bid | abalance | filler
-----+-----+----------+--------
(0 rows)

Time: 213.412 ms

這里是查詢計劃的內容:

rhaas=# explain (costs off) select * from pgbench_accounts where filler like '%a%';
                 QUERY PLAN                 
---------------------------------------------
 Gather
   Number of Workers: 4
   ->  Parallel Seq Scan on pgbench_accounts
         Filter: (filler ~~ '%a%'::text)
(4 rows)

目前因該功能還在進一步的開發中,還有一些未處理的問題和使用限制,如現在該功能暫不能在分區表上使用; 僅可對表的全表掃描類查詢較有效,有索引的列就用不上了,當然對數據的過濾的操作,多進程并行處理總是要快一些; 還有就是并行處理的進程數如何根據系統配置進行最有效設置,以及其他一些小問題還未完全完成。

最后,也是請大家多多進行測試,并給我們反饋Bug,謝謝!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!