了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站
Gpexpand是Greenplum数据库的扩容工具,可以为集群增加新节点从而可以存储更多的数据,提供更高的计算能力。 Greenplum 5及之前,集群扩容需要停机增加新节点,然后对表数据做重分布。因为集群大小已经改变,所以重分布之前要先将所有哈希分布表改成随机分布,然后再按照新的集群大小重新计算哈希值并重新分布。
所以,旧的扩容技术存在如下几个问题:
1. 需要停机,集群无法在扩容期间提供服务。
2. 数据重分布过程集群性能差。随机分布表因为不能确定数据分布规律,无法对查询做优化。
3. 虽然表的重分布可以并行进行,但是扩容过程中因为额外记录了每个表的更新状态,在对表做完重分布后要更新状态表。Greenplum 6版本之前表的更新操作只能串行。所以对大量小表做并行重分布的时候会因为状态表更新的串行化产生瓶颈。
全新设计的gpexpand支持在线扩容,同时对数据重分布过程做了优化,提高了并发度。 整个扩容分为两个阶段:
1. 在线增加新节点
2. 数据重分布
如何在线增加新节点
Greenplum通过catalog表gp_segment_configuration维护集群节点信息。所以在线增加节点并不复杂