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爱好者使用和交流。

相关文章
相关标签/搜索