obloader入库性能如何提升

【 使用环境 】测试环境
【 obloade组件 】
【 使用版本 4.3.2 】
【问题描述】最近在对数据库选型,测试了一下oceanbase 4.3.4的社区版本,建了一张分区表一共170个字段,这个分区表按照月粒度进行分区的;现在导1000万条数据进去用obloader方式导入需要花销24分钟;不管如何调整都不尽人意;
我调整了线程、并行、batch 速度提升到了20分钟;但是同样的数据量clickhouse 8分钟就入完了,而且clickhouse还不用提前建立分区,请咨询一下各位大神Oceanbase如何才能提升入库性能,不胜感激!!!Oceanbase需要如何优化一下~~;
附上我入库执行的命令
obloader -h 192.168.5.88
-P 2883
-u root@aduser
-p ‘+oB38QrB^R/nyZ;2e&(’
–sys-user=root@sys
–sys-password=‘IMAVf~^64CIfeS’
-c racdb
-t aduser
-D abc
–csv
-f /data/1000wgenerated_data.csv
–table thmu1000wdata
–parallel=20
–thread 20
–block-size=256
–batch=200

。。。 。。。

  1. Enqueue Performance Monitor:

Dimension \ Metric | Tps | Throughput | Buffer

 1.sec.avg      |     9615.09 Records/sec      |          8.3 MB/sec          |     4060 Slots     
 1.min.avg      |     5249.54 Records/sec      |         4.53 MB/sec          |     4060 Slots     
   Total        |       10000000 Records       |             8 GB             |     4060 Slots     

  1. Dequeue Performance Monitor:

Dimension \ Metric | Tps | Throughput | Buffer

 1.sec.avg      |      9566.0 Records/sec      |         8.26 MB/sec          |     275 Slots      
 1.min.avg      |     14030.54 Records/sec     |         12.11 MB/sec         |     275 Slots      
   Total        |       9949464 Records        |             8 GB             |     275 Slots      

2024-11-26 03:48:47 [INFO] ---------- Finished Tasks: 25 Running Tasks: 3 Progress: 100.00% ----------
2024-11-26 03:48:47 [INFO]

(OceanBase Server Status)

Table: “thmu1000wdata”

Leader Server: 192.168.5.85:2881 	 Merge Status: false 	 Mem Used Ratio: 27% 	 Load Mode: FAST 	 Partition: [200067,200066,200065,200064,200071,200070,200069,200068,200075,200074,200073,200072,200076,200059,200058,200063,200062,200061,200060] 

2024-11-26 03:48:50 [INFO] ---------- Finished Tasks: 28 Running Tasks: 0 Progress: 100.00% ----------
2024-11-26 03:48:50 [INFO]

All Load Tasks Finished:


    No.#        |        Type        |             Name             |            Count             |       Status       

     1          |       TABLE        |        thmu1000wdata         |     10000000 -> 10000000     |      SUCCESS       

Total Count: 10000000 End Time: 2024-11-26 03:48:50

2024-11-26 03:48:50 [INFO] Load record finished. Total Elapsed: 20.48 min
2024-11-26 03:48:50 [INFO] System exit 0

有试过旁路要花多久么?

1 个赞

高性能导入推荐用旁路导入的方式,旁路导入参考这篇文档 https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000001583708

obloader 导入性能调优可参考这篇文档 https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000001583704

你这个场景是单个 csv 文件导入,性能瓶颈可能是在 CSV 解析了,可以尝试改为多文件导入的方式。
另外一个方式是可以修改 obloader 脚本里的 file.split 参数,改为 -Dfile.split=UNSAFE ,UNSAFE 模式相比 SAFE 模式会有更快的文件拆分性能。

可以试下导数工具的旁路导入功能。另外,导入数据的时候 可以尝试开启 目标租户的 以下变量和参数:

ob_sql_work_area_percentage = 20
max_allowed_packet = 1073741824
writing_throttling_trigger_percentage=90
freeze_trigger_percentage=70

变量和参数具体含义可以查看官网说明

经典问题,参考: OBLOADER 导数工具旁路导入实践

非常感谢 !刚接触这个数据库,有翻阅过官方相关文档,有一页的确介绍了旁路,但是介绍的太简短了也就没仔细看这篇文章,后续我验证一下旁路方式!

好的 多看看官方文档 有问题发帖交流