1.greenplum入库方式总结
greenplum目前主要使用到的入库方式有如下4种:
- 使用insert into方式入库
- 使用gpss方式入库
- 使用gpkafka方式入库
- 使用gpcopy方式入库
2.以上入库方式优缺点及性能对比
详细优缺点及性能对比如下:
入库方式 | 优点 | 缺点 | 入库性能 | 是否支持事务 |
insert into | 直接使用jdbc方式入库,支持事务 | 入库性能较差,对于update,insert等操作或锁表 | 500条/s | 支持 |
gpss | 使用gpss+gpfdist方式入库,分布式并行入库,入库性能最好 | 单个gpss只能一个session(多个session连接不稳定),一个批次数据入库大小不能超过4MB | 1万+条/s | 不支持 |
gpkafka | 使用gpss+kafka+gpfdist方式入库,分布式并行入库,入库性能最好 | 一个gpkafka服务只能对应一个topic,对应一张表 | 1万+条/s | 不支持 |
gpcopy | 使用greenplum的gpcopy入库 | 所有数据入库都要经过greenplum的master节点,入库性能受限于master节点(带宽,cpu,内存) | 1万+条/s | 不支持 |
注意:以上测试环境为内存:16GB,CPU:8 core,磁盘:500GB。
3.场景选择
- 数据量小,有事务要求场景,可选择insert into方式;
- 如果针对表特别多,数据量大小一般,无事务要求场景,建议选择gpcopy方式入库;
- 针对少量表,单表数据量巨大,可采用gpkafka,gpss;
说明:若使用gpss,建议一张表对应一个gpss服务,需要注意每个writeRequest数据量不超过 4MB,该数据量大小目前官方并未提供参数可供配置。