问题描述
详细版本: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导入的情况
https://doc.yashandb.com/yashandb/23.2/zh/参考手册/配置参数.html
文档中配置参数有详细说明
标签:300G,yasldr,YashanDB,配置,PERCENT,导入,线程,迁移,COLUMNAR From: https://www.cnblogs.com/YashanDB/p/18613139