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

简介: 问题描述详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237影响范围:离线数据迁移场景,影响业务数据入库。外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。操作系统环境配置:125G 内存32C CPU2T 的 HDD 磁盘问题出现的步骤/操作:1、部署崖山分布式数据库 1mm 1cn 3dn单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式2、观察 yasldr.log 是否出现如下错

问题描述

详细版本: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 导入的情况

相关文章
|
3月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
3月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
113 11
|
4月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
4月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
327 2
|
4月前
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
263 6
|
5月前
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。
|
9月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
878 0
分布式爬虫框架Scrapy-Redis实战指南
|
3月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
213 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
3月前
|
缓存 NoSQL 关系型数据库
Redis缓存和分布式锁
Redis 是一种高性能的键值存储系统,广泛用于缓存、消息队列和内存数据库。其典型应用包括缓解关系型数据库压力,通过缓存热点数据提高查询效率,支持高并发访问。此外,Redis 还可用于实现分布式锁,解决分布式系统中的资源竞争问题。文章还探讨了缓存的更新策略、缓存穿透与雪崩的解决方案,以及 Redlock 算法等关键技术。