参数说明
表 2 gs_loader参数说明
注意:
- 参数均为小写,不支持大写,同时兼容gsql登录方式:-p端口号,-h主机,-d数据库,-U用户名,-W密码方式。
- 使用rows参数时,提交次数不要超过1000次,否则会对性能产生影响。提交次数约等于数据文件中数据行数除以rows参数取值。不指定rows参数时,rows无默认取值,表现为只进行一次提交,即所有数据都导入表中后进行一次事务提交。
- 小数据量频繁的提交会影响导入数据的性能,推荐合理配置rows参数的取值,保证每次提交的数据量大于5MB。对于常用的16U128G规格机器,一主两备部署场景下,向5个字段的表内导入13GB数据,排除网络影响,多次提交和单次提交(每次提交5MB数据)的速率基本持平,为10MB/s左右。
- compatible_nul参数实际控制guc参数loader_support_nul_character值的设置:
- compatible_nul=true对应session级set loader_support_nul_charchter='s2'。
- compatible_nul=false对应session级set loader_support_nul_character='s1'。 建议通过命令行设置此参数且通过compatible_nul设置优先级高于guc_param中设置。
- 当前gs_loader仅支持数据文件中存在nul字符时的兼容,不支持ctl控制文件中存在nul字符。ctl文件中存在nul字符会存在不可预期的问题。
- 指定binary参数为true后,有以下行要求:
- 数据文件必须为通过\COPY中BINARY模式导出的二进制格式数据文件,但是该模式导出的数据文件通常兼容性及可移植性较差,建议直接使用\COPY语句进行导入。
- gs_loader会将控制文件中语法转换为\COPY中BINARY模式下最简单的语法,即\COPY table_name FROM 'binary_file_path' BINARY; 语句。只解析控制文件中导入模式,表名信息和命令行中的control、data、binary、guc_param及数据库连接参数信息,不对其他参数语法进行解析和生效。
- 对于gs_loader的命令行及控制文件中有以下要求:
- 不支持字符集配置。
- 不支持WHEN条件过滤及DISCARD生成。
- 不支持enable_copy_error_log = off下将错误数据直接写入bad文件。errors默认取值unlimited,会默认记录编码异常数据。
- 不支持配置CSV模式,不支持指定分隔符及包裹符,不支持TRAILING NULLCOLS语法。
- 不支持数据类型配置、POSITION配置及列表达式使用。
- 不支持FILLER、CONSTANT、SEQUENCE、NULLIF参数。
- 不支持skip、rows、compatible_nul、compatible_illegal_chars参数。
- 指定parallel大于1时:
- 当同时设置binary参数为true时,parallel参数失效,按串行导入。
- 不支持在控制文件中设置OPTIONALLY ENCLOSED BY或者FIELDS CSV。
- 不支持在控制文件中设置SEQUENCE列。
- 无法保证数据按数据文件中的顺序导入。如果表中存在自增列,导入后自增列值的顺序无法保证与数据文件中顺序一致。
- 同时使用errors参数时,errors参数的意义为每个子任务允许出现的最大错误行数。
- 同时使用skip参数时,skip参数的意义是在整个数据文件开头跳过的行数。
- 同时使用rows参数时,分批提交的批次各子任务独立计算。
- 在客户端CPU、内存和服务端CPU、内存、空闲线程以及网络带宽不存在瓶颈时,相比于串行导入,并发度为2/4/8时的性能提升不低于1.5/3/5倍。
- 并发度每增加1,大约增加客户端10MB内存,服务端大约35MB内存。
- 当设置GUC参数support_zero_character为on时,表示数据库支持0x00字符的写入和读取,gs_loader导入数据时,会将0x00按照原始样式导入,而不是受其他兼容性参数影响转换成0x20。