大家好,我是GreenPlum小白,刚刚接触1个月,有一些疑惑的地方请教大家。
1.GP集群环境
版本:4.3.11.0
OS:CentOS 6.5
硬件配置:所有节点都是1Gb网卡,32核,32GB内存
集群组成:1master,1standby master,20*segment(每个segment节点一个primary,一个mirror)
2.配置情况
队列:active_statement=240, memory_limit=24G, stat_mem=100MB,shared_buffers=500MB,gp_resqueue_priority_cpucores_per_segment=30
3.测试情况
1个select查询返回结果需要5ms,40个select查询并发需要500ms左右,200个查询并发需要3s
mysql单机做同样测试200个并发查询,只需要1-2s。
发现只有master节点CPU使用率偏高,IO,内存使用率,网络带宽都没有太大压力
测试指令:
select provider_code,
brand_code,
item_third_cate_cd,
dt,
days,
item_sku_id,
device_type
FROM XXXXXXXXX
WHERE dt between '2017-02-01 00:00:00.0' and '2017-03-07 00:00:00.0' and provider_code='xxxxxx'
AND brand_code=32491
AND item_third_cate_cd=7052
AND days=7
AND item_sku_id=-2
AND device_type=1
AND division_id ='1725'
GROUP BY provider_code,
brand_code,
item_third_cate_cd,
dt,
days,
item_sku_id,
device_type;
4.问题:
为什么20个节点的GreenPlum做查询性能还不如一个节点mysql?
面对高并发master节点会不会成为瓶颈?
泻药
查询结果又多大?
从你的硬件配置上看,一个主机的网络是一个千兆网卡,吞吐大概只有100MB 左右。Greenplum 的查询结果最终都需要通过网络,传送给 Master 节点,如果结果集比较大,Master 节点的网络吞吐会成为瓶颈,影响查询性能。
另外,你的 SQL 我没看懂,为啥要加 Group By?