GBase新闻
南大通用GBase 8a数据库数据加载功能及调优(二)
负载均衡配置
GBase 8a支持负载均衡,根据任务数自动优选加载节点,提供以下参数配置加载任务负载均衡,提升加载性能:
gcluster_loader_max_data_processors
说明:集群中加载节点的数量,同加载SQL参数MAX_DATA_PROCESSORS。
取值范围:1-300
默认值:16
调优值:建议4-6。
gcluster_load_rebalance_seed
说明:加载任务负载均衡控制,集群中加载节点的选择方式可通过此参数微调。
默认值:5。
调优值:加载任务随机选择执行任务数最少的几个data节点作为数据加载节点。在加载并发较多场景下,可以适当增加该值,从而增加满足加载机条件的data节点个数。
示例:在12个data节点集群中,MAX_DATA_PROCESSORS=4的情况下,一次加载任务会随机选择不超过四个data节点作为加载机。
如果gcluster_load_rebalance_seed值为5,集群中所有data节点的最小任务数为20,则所有任务数<=25的data节点都可供本次加载任务随机选择为加载节点;
但是<=25的节点个数不足四个时,则使用满足该要求的几个节点作为加载机,因此可以调大rebalance_seed参数值来扩大可选加载机的范围,但通常不超过10。
加载状态监控
GBase 8a提供查看加载状态和加载结果的系统表与日志,支持加载过程监控、结果查询、错误数据溯源。
加载状态信息查看:
加载任务启动后,可通过SQL方式查看本次加载任务的状态信息。状态信息表information_schema.load_status中记录正在运行的所有加载任务的状态信息。
加载结果:
加载任务的结果信息存储在load_result.log文件中,可以通过information_schema.load_result系统视图查看。
LOAD_RESULT表:记录当前 coordinator 节点的加载信息。
CLUSTER_LOAD_RESULT表:记录所有 coordinator 节点的加载信息。
注意:information_schema库的表查询都会占用内存,load_result表会话之间不共享,并发查询时每个会话会读取一份,load_result到自己的session内存中。加载设计过程中及运维过程中需合理使用information_schema库表的查询,及时清理废弃日志。
加载接口开发
GBase 8a集群通过gccli工具、jdbc/.net开发接口执行SQL语句加载数据,提供的开发接口包括:
1、jdbc接口
executeUpdate(loadSql) -- 执行加载语句
stmt.getSkippedLines() -- 获取跳过错误数据行数
stmt.getLoadTaskID() -- 获取加载任务id
2、ado.net接口
cmd.ExecuteNonQuery() -- 执行时间加载SQL
cmd.RecordsSkipped -- 跳过错误数据行数
cmd.RecordsTaskID -- 加载任务ID
3、ODBC接口
提供SQLROWCOUNT(hstmt,&rowCount)获取加载成功行数
SQLGetStmtAttr()中的SQL_RES_GBASE_LOAD_TASK_ID获取任务ID
SQL_RES_LOAD_TASK_SKIPPED_LINES获取忽略行数
4、Python API接口
提供getInfo接口可获取成功行数、忽略行数、任务ID三个信息
其它加载问题
数据加载文件的读写一致性
在使用freeNas等软件搭建数据文件服务器时,建议使用同一种文件访问接口,避免对同一个数据文件同时使用NFS接口、FTP接口, 容易出现文件读写不一致问题。
加载SQL参数[MAX_BAD_RECORDS number]
说明:用于设定错误数据的行数上限。
取值范围:0~ 4294967295,0表示只要有错误数据就报错退出,加载任务自动回滚。
调优值:所有集群节点独立计算加载错误数量,一旦有一个节点加载时错误数据达到本限制,则终止所有节点的加载任务。集群加载提交之前检查总错误条数是否超出限制,如果超出限制,放弃提交,报错退出。
大量小文件加载优化(862.33R39、953版本及以上)
一般小于10M的文件为小文件,大于1G的文件为大文件。相同数据量,文件个数越多,提升越多;同样大小的文件,文件个数越多,提升越多;
相同数据源复用网络连接;
集群层,相同目录文件转化成文件通配方式批量获取文件大小,不同目录文件复用网络连接。