AntDB3.1新增幾個性能參數的使用和效果

AntDB3.1版本與2.2版本相比,性能上作了很大改善node

一、支持並行計算(繼承Postgres9.6新增並行功能);git

二、優化執行計劃,將計算儘可能下放到datanode上,而後在coordinator上彙總,而不是如2.2那樣,將數據上拉到coordinator上計算;github

三、支持datanode之間,datanode和coordinator之間數據reduce,當要查詢的數據分佈不平衡時,將數據reduce到一個節點上計算,最大限度提升查詢效率。sql

 

下面是和提升性能相關的重要參數。下面將舉例說明參數的使用。post

enable_cluster_plan性能

3.1與2.2相比,在性能上作了不少優化。打開此開關,會走3.1的執行計劃,會大幅提升性能。測試

下面的一樣的查詢語句在打開開關和關閉開關的狀況下,執行計劃不一樣,打開開關後,查詢時間大大縮短。優化

pgxc_enable_remote_query = offpostgresql

打開開關:繼承

關閉開關:

max_parallel_workers_per_gather

這個參數決定了每一個gather最多容許啓用多少個work process

max_worker_processes

這個參數決定了每一個節點在同一時間容許啓動多少個work process。

這兩個參數共同決定在datanode和coordinator上啓動多少個worker,worker數量決定

另外,執行計劃是在coordinator上生成的,建議在coordinator和datanode上參數設置同樣,不然,datanode上的最終值是兩者較小值。

 

下面舉例說明這兩個參數配置對執行計劃和效率的影響。

 

postgres=# create table aa(a1 int, a2 int);

CREATE TABLE

postgres=# copy aa from '/home/mass/data/big_ranint_int_10million.sql' with delimiter as ',';

COPY 10000000

postgres=# analyze aa;

ANALYZE

postgres=# explain(verbose, analyze) select count(*) from aa;

下面開始經過設置參數來控制worker的數量,來測試查詢效率隨worker和datanode數量的關係。

max_parallel_workers_per_gather =2

max_worker_processes = 3

最終啓動2個worker

2個datanode:

3個datanode:

4個datanode:

max_parallel_workers_per_gather =4

max_worker_processes = 3

最終啓動3個worker

 

2個datanode:

3個datanode:

4個datanode:

max_parallel_workers_per_gather =4

max_worker_processes =4

最終啓動4個workers

2個datanode:

3個datanode:

4個datanode:

從下圖可見,隨着datanode的增長,worker數的增長,查詢時間愈來愈少

 

參考:

QQ交流羣:496464280

源碼地址:http://github.com/ADBSQL 

歡迎廣大postgresql愛好者使用和交流。

相關文章
相關標籤/搜索