用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据库,迁移任务频繁出错

首页    知识库    常见问题    用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据库,迁移任务频繁出错

问题描述

详细版本YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237

影响范围

离线数据迁移场景,影响业务数据入库。

外场将部分NewCIS的报表业务放到分布式数据库,验证SQL性能水平。

操作系统环境配置

125G内存

32C CPU

2T的HDD磁盘

问题出现的步骤/操作:

1部署崖山分布式数据库 1mm 1cn 3dn

单线启动yasldr数据迁移任务,设置32线程的bulk load模式

2观察yasldr.log 是否出现如下错误

failed to allocate 6812396 bytes memory quota for init bulkload quota

 

问题分析

BULKLOAD导入过程中所有导入线程的最大可用内存按如下公式配置:

COLUMNAR_MATERIAL_PERCENT * COLUMNAR_VM_BUFFER_SIZE * BULKLOAD_MAX_MEM_PERCENT

相应参数配置

COLUMNAR_VM_BUFFER_SIZE = 19375M

COLUMNAR_MATERIAL_PERCENT = 80 //没有配置,使用默认配置

BULKLOAD_MAX_MEM_PERCENT = 80 //没有配置,使用默认配置

导入线程的最大可用内存: 80% * 19375M * 80% = 12400M

yasldr进程数(8个)和线程数(32线程),总线程数量: 8 * 32 = 256

平均每个线程的可用内存: 12400M/256 = 48.4375 M

已知配置参数:COLUMNAR_BULK_SIZE = 4096 //指定列存计算每批次记录行数

每行记录如果有20K,就超过平均值,资源变成紧张。

 

规避方法

1、减小导入线程

2、调大相关内存配置(COLUMNAR_MATERIAL_PERCENT/COLUMNAR_VM_BUFFER_SIZE /BULKLOAD_MAX_MEM_PERCENT)

为保证导入不因内存不足报错,请至少保证每个服务端导入线程内存最小为300M。

可以通过视图dV$bulkloadStat观察bulkload导入的情况

配置参数 | YashanDB Doc

文档中配置参数有详细说明

 

浏览量:0