AntDB3.1新增几个性能参数的使用和效果

AntDB3.1版本与2.2版本相比,性能上做了很大改善

1、支持并行计算(继承Postgres9.6新增并行功能);

2、优化执行计划,将计算尽量下放到datanode上,然后在coordinator上汇总,而不是如2.2那样,将数据上拉到coordinator上计算;

3、支持datanode之间,datanode和coordinator之间数据reduce,当要查询的数据分布不平衡时,将数据reduce到一个节点上计算,最大限度提高查询效率。

 

下面是和提高性能相关的重要参数。下面将举例说明参数的使用。

enable_cluster_plan

3.1与2.2相比,在性能上做了很多优化。打开此开关,会走3.1的执行计划,会大幅提高性能。

下面的同样的查询语句在打开开关和关闭开关的情况下,执行计划不同,打开开关后,查询时间大大缩短。

pgxc_enable_remote_query = off

打开开关:

关闭开关:

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

 

转载于:https://my.oschina.net/u/3771732/blog/1627271

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值