Greenplum 6新特性:
在线扩容工具GPexpand剖析
1.12 MB
37 页
0 评论
| 语言 | 格式 | 评分 |
|---|---|---|
中文(简体) | .pdf | 3 |
| 摘要 | ||
文档详细介绍了Greenplum 6版本中GPExpand工具的新特性及改进。GPExpand支持在线不停机扩容,通过优化数据重分布和并行操作提升效率。其实现包括增加新节点只需修改gp_segment_configuration、引入跳表哈希算法、优化表更新的并行处理等。扩容过程中,新节点初始无数据,查询计划会受到影响,部分操作可能被阻塞。GPExpand还提供了清理功能,并支持通过GUC参数控制算法选择。这些改进提高了Greenplum集群的扩展性和性能。 | ||
| AI总结 | ||
《Greenplum 6新特性:在线扩容工具GPexpand剖析》
一、GPExpand改进与实现
1. 在线不停机
- 增加新节点时,只需在gp_segment_configuration中添加新节点信息
- 新节点以主节点为模板生成,仅包含catalog,无实际数据
2. 数据重分布优化
- Greenplum 6引入numsegments参数,描述表连续分布的segment数量,随集群大小调整
- 扩容后,表按numsegments值分配Gang,避免了旧版本的随机分布问题
- 扩容完成后,更新gpexpand.status_detail表状态,旧版本为串行,新版本支持并行更新
3. 并行优化
- 支持并行初始化新节点和并行执行expand操作
- Greenplum 6支持heap表并行更新,解决旧版本在更新状态表时的瓶颈问题
4. 扩容期间对查询的影响
- 扩容阶段无法修改catalog
- 正在重分布的表读写会被阻塞
- 哈希分布表若分布状态不一致,Join无法优化
二、GPExpand简介与用法
1. 工具概述
- 安装路径:$GPHOME/bin
- 作为命令行脚本工具,功能类似gpstart、gpstop等
- 主要用于集群扩容,支持更大容量的存储和计算能力
2. 工作流程
- 建立并添加新节点
- 数据重分布
- 清理扩容相关数据
3. 功能细节
- 执行gpexpand后,会遍历postgres数据库中的gpexpand.status_detail表
- 对所有表执行ALTER TABLE {schema.table} EXPAND TABLE操作
- 扩容过程中,gpexpand schema下创建以下表格:
* status:扩容状态
* status_detail:记录待扩容表
* expansion_progress:扩容时的状态记录
三、具体改进
1. 时间复杂度
- 扩容时间复杂度为Log(N),更多算法细节可参考链接:https://arxiv.org/pdf/1406.2294.pdf
- Jump Consistent Hash算法默认启用,可通过GUC gp_use_legacy_hashops控制
2. 并行度控制
- 支持通过-gpexpand –B实现并行节点初始化
-Greenplum 5及之前版本状态表更新串行,存在瓶颈
- Greenplum 6支持全局死锁检测,可并行更新heap表 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
30 页请下载阅读 -
文档评分













