认证培训专区
学习笔记
文章

GDCP认证学习笔记(五)入库加载30T/h的秘密

发表于2026-02-09 16:09:12101次浏览5个评论

一、加载原理

GBase8a公开渠道宣称的加载速度是可以达到30T/h,这对于数据仓库、集市或者经营分析等分析领域系统,无论是生产环境,还是POC和日常测试时,动辄导数3小时,计算10分钟的情况,是非常有吸引力的。

图片

上图便是GBase数据加载结构图,分析下其产品加载效率爆表的原因:首先是专为海量数据分析设计的分布式并行架构,不仅是实际数据查询计算时可以充分利用并行资源,数据加载时也把这种并行优势发挥到了极致。绿色控制流,客户端通过gcluster等客户端工具下发加载命令,然后命令被下推到各个gnode节点做并行加载;橙色则代表实际的数据流,从数据源文件中切割并获取数据文件,拷贝到gnode节点然后进行并行加载。简单地说,它并不是靠一两个节点干活,数据也并不是从gcluster节点进入集群,而是让集群中的每一个数据节点都充当了加载服务器的功能,让每一个数据节点都同时参与数据的读取、解析和加载工作。

[MAX_DATA_PROCESSORS number]:用来指定本次加载任务中参与数据解析的处理的最大节点数,取值范 围[1, 4294967295],默认值16。

其次,当收到一个加载任务时,系统会智能地将源数据文件切割成多个逻辑块,动态分配给所有可用的数据节点并行处理。这种设计使得加载能力可以随着集群节点数量的增加而增加,不会出现因为数据文件大小不一、数据节点处理任务的繁忙程度不同而导致的木桶短板。

[NOSPLIT]:用来指定本次加载任务中是否禁用分块加载功能,指定该参数将禁用分块加载功能。不指定该参数,在集群加载时,将自动启动分块加载功能,按照数据量和参与运算的加载节点数对数据进行均匀分块, 以均衡数据服务器和数据处理节点的负载,优化加载能力。

[MIN_CHUNK_SIZE number]:用来指定本次加载任务中数据分块的最小粒度,取值范围[1,4294967295]字 节,默认值64MB。

我问了一下deepseek,GBase8a数据库加载效率30TB/h的数据来源,显示是2020年的TPC-DS测试,仅用了8台物理服务器,考虑到MAX_DATA_PROCESSORS默认值都是16,也就是说这个值仅仅是硬件的极限值,如果服务器足够多,理论上还可以提升几倍。

这里也不由得感慨一下,与互联网基因的厂商相比,动辄1500、2700台服务器打TPC榜单,那是真正的“格局打开”,传统厂商还真是有些“丰俭由人”了。

二、导入导出语法

2.1.导入命令

LOAD DATA INFILE ‘file_list’ 
INTO TABLE 
[database_name.]table_name 
[options]

2.2.导出命令【表结构】

gcdump [OPTIONS] database [tables] >[files]
gcdump -ugbase -pgbase20110531 -B [databases] [tables] >/home/gbase/xxxx.sql

2.3.导出命令【数据】

SELECT... FROM ... INTO 
OUTFILE 'file_name' 
[OPTION];

[Options]选项提供了非常丰富的能力,包括指定字符集、日期时间格式、空值、分隔符、转义符、列匹配、定长格式以及一些加载和日志方面的参数控制,文章篇幅原因,不做过多记录。

三、加载状态

加载任务启动后,可以通过SQL 方式查看本次加载任务的状态信息。
状态信息表中记录正在运行的所有加载任务的状态信息。
 

gbase> use information_schema;
gbase> select * from load_status;

四、加载日志

加载过程可能出现各种意外,自己曾经的项目中就出现过如字段长度不匹配、迁移过程char/varchar国产库和Oracle对于字节处理方式不同、中文字符集、各种奇葩数据占用分隔符、换行符、转义符等情况,因此对于出现意外后的问题定位就显得尤为重要,GBase日志分类:
1、加载结果日志:记录加载任务成功与否和执行时间等。

2、错误信息日志:记录未加载成功的源数据。

3、溯源信息日志:记录加载失败原因,定位错误数据位置。

默认情况下,日志自动汇总功能处于开启状态。三个日志会统一保存在执行加载任务节点的集群安装主目录(opt)/gcluster/log/gcluster/loader_logs/ 任务id目录下。
关闭日志自动汇总功能:set global gbase_loader_logs_collect=0,加载日志会默认存储在加载节点的/opt/gnode/log/gbase/loader_logs目录下。也可以通过select语句查看上述加载相关信息:
1、加载结果信息:information_schema库内记录的加载结果信息:

  • LOAD_RESULT 表:记录当前 coordinator 节点的加载信息

  • CLUSTER_LOAD_RESULT 表:记录所有 coordinator 节点的加载信息

2、错误和溯源信息支持show语句查看加载错误和溯源信息:

show [ gcluster ] load logs task_id LIMIT {[offset,] row_count}

评论

登录后才可以发表评论
G2021发表于 5个月前
学习了
用户头像
山佳发表于 5个月前
学习了
用户头像
郝老师发表于 5个月前
厉害了
用户头像
GBase用户28017发表于 5个月前
谢谢分享。
菲菲发表于 2个月前
谢谢分享