群通知
#1
【 使用环境 】 测试环境
【 OB or 其他组件 】obloader Version: 4.3.3-RELEASE
【 使用版本 】ob 4.2.5.2
【问题描述】尝试提高租户的线程为64,内存20G,但是速度未有明显提升
导入500M左右的数据库需要Load record finished. Total Elapsed: 41.17 s
导入命令"${OB_LOADER_HOME}/bin/obloader"
-h $HOST
-P $PORT
-u root@${TENANT}
-p $PASSWORD
-D $target_db
–sql
–all
-f $backup_dir
–batch 500
–thread 64; then
调整obloader过此参数
JAVA_OPTS="$JAVA_OPTS -server -Xms16G -Xmx16G -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M -Xss352K"
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
论坛小助手
#3
根据您提供的信息,使用 obloader 导入数据时速度较慢的问题可能涉及多个方面。以下是一些可能的原因和优化建议:
1. 检查导入模式
- 根据文档库中的信息,obloader 提供了两种写入模式:Client 模式 和 Server 模式。
-
Client 模式 使用 JDBC 或旁路导入(DIRECT)将数据插入 OceanBase 数据库。
-
Server 模式 集成
LOAD DATA
将数据导入 OceanBase 数据库。
-
建议:尝试切换到 Server 模式以提高性能。可以通过在命令中添加参数
--server-mode
来启用 Server 模式。
"${OB_LOADER_HOME}/bin/obloader" \
-h $HOST \
-P $PORT \
-u root@${TENANT} \
-p $PASSWORD \
-D $target_db \
--sql \
--all \
-f $backup_dir \
--batch 500 \
--thread 64 \
--server-mode;
依据:OceanBase 生态工具介绍 → 迁移同步工具 → obloader/obdumper
2. 调整批处理大小 (--batch
)
- 当前的批处理大小为 500,可能过小或过大导致性能问题。
-
建议:尝试调整
--batch
参数的值,例如设置为 1000 或 2000,找到适合的批量大小。
--batch 1000
依据:使用导数工具进行数据迁移 → 导数工具介绍 → obloader
3. 优化线程数 (--thread
)
- 当前线程数设置为 64,但实际效果可能受到硬件资源限制。
-
建议:
- 确保目标 OB 集群有足够的 CPU 资源支持高并发。
- 可以尝试减少线程数(如 32 或 16),观察是否能提升性能。
- 如果硬件资源充足,可以适当增加线程数,但需注意不要超过系统承载能力。
--thread 32
4. 检查 Java 内存配置
- 您已经设置了较大的 Java 堆内存(
-Xms16G -Xmx16G
),但可能仍存在内存不足的情况。
-
建议:
- 确保 JVM 参数配置合理,避免 OOM 或 GC 压力过大。
- 如果仍有问题,可以尝试减少堆内存大小(如
-Xms8G -Xmx8G
),并观察性能变化。
依据:使用导数工具进行数据迁移 → 环境准备和安装 → 运行环境
5. 检查数据文件格式
- obloader 支持多种数据文件格式(如 CSV、INSERT SQL、Apache ORC 和 Apache Parquet)。如果数据文件格式复杂或不规范,可能导致导入性能下降。
-
建议:
- 确保数据文件格式简单且符合 obloader 的最佳实践。
- 如果使用的是 CSV 文件,确保字段分隔符和转义字符正确。
依据:OceanBase 生态工具介绍 → 迁移同步工具 → obloader/obdumper
6. 检查目标表的索引和约束
- 如果目标表存在大量索引或约束,可能会显著降低导入性能。
-
建议:
依据:产品 FAQ → 产品架构和特点 FAQ → 使用 OceanBase 数据库在开发中要特别注意什么?
7. 检查网络带宽
- 如果数据文件存储在远程服务器上,网络带宽可能成为瓶颈。
-
建议:
- 确保网络带宽充足。
- 如果可能,将数据文件复制到本地磁盘后再执行导入操作。
8. 启用断点续传和错误重试
- obloader 支持断点续传和错误自动重试功能,可以避免因网络波动或其他原因导致的性能下降。
-
建议:确保启用了这些功能。
--resume
--retry-times 3
依据:OceanBase 生态工具介绍 → 迁移同步工具 → obloader/obdumper
总结
通过以上优化措施,您可以逐步排查并解决 obloader 导入数据速度慢的问题。如果问题仍未解决,建议使用 OceanBase 敏捷诊断工具 obdiag
收集诊断信息,并联系 OceanBase 技术支持团队获取进一步帮助。
更多信息请查看:
- 使用导数工具进行数据迁移
- 迁移同步相关生态组件介绍
- SQL 性能问题的典型场景和排查思路
- 产品 FAQ
- OceanBase 生态工具介绍
- 设置日志同步限速
- 导入数据概述
- lob_enable_block_cache_threshold
1 个赞
皇甫侯
#4
OBLOADER的文档有性能优化建议,可以从 命令行选项调优、 虚拟机参数调优、 数据库内核调优三个地方优化,接着还可以看看SQL诊断里有没有查询的慢SQL,基本的优化手段就这样了 
https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000002401642
Giant
#5
要是OCP 接管了的集群,发下您导入数据的 TPS 等监控吧