关于OBloader的启动耗时问题。

因为项目需要,需要导入大量的不同表的 csv文件的数据。目前采用 cmd方式调用OBloader进程的方式导入csv数据。

因为程序需要频繁启动OBloader进程,在启动的过程中需要消耗大量的时间。引发导入性能不能满足生产需要,想咨询下,如何快速启动OBloader进程,或者启动OBloader进程之后,可以让OBloader进程常驻,不需要再次启动减少启动耗时呢?

目前我们客户端内存24G的客户端系统,JVM内存配置了12G。

测试的启动速度需要耗时1.5秒。

想了解下如何调优呢?

调优部分的内容详见:
https://www.oceanbase.com/docs/common-oceanbase-dumper-loader-1000000000518415

还可以在命令行文档里看下旁路导入部分和性能选项部分:OceanBase分布式数据库-海量数据 笔笔算数

你是想用obloader 一次性导入非常多的文件?

你是同一张表, 不同文件, 还是不同的表, 不同的文件

我们暂时还没有让 OBloader 进程常驻的这个操作,启动 jvm 本身就耗时,语言特性决定的。

老师您好。目前这个是大文件的调优,我们大文件目前测试可以达到10多mb一秒。这个是可以满足需要了。。但是就是小文件,每次启动OBLoader需要大量时间。请问,如果加快这个启动速度呢?或者能否让OBLoader这个进程常驻呢?

哦哦,懂你意思了。刚才问了下 obloader 的研发同学,他说:“如果命名方式能被 obloader 识别的话,即,表名 + 后缀。就可以多表导入,只用启动一次。”

大概意思应该就是可以通过加逗号的方式一次导入一批小表,之前没用过这种方式,我也一起试用一下~

老师,是不同表,不同文件,ctl文件也是不同的。所以目前我们是用多次启动OBLoader导入。但是每次启动OBLoader进程确实是比较慢 哦。 一次需要1.5秒启动。我这个机器。

你们后期有考虑用c++实现呢?嘿嘿。。c++启动就很快了。

哈哈,这个好像还没有

老师。这个有例子吗?我们也测试一下。多表导入的。

这个不能把进程挂着 你每次导的不一样obloader也是可能会变化的所以需要每次执行

兹拉坦老师,我们今天要研究一下这个批量导入的了,不然确实不能满足生产需要。您那边麻烦也试用一下。有相关的命令还有ctl文件怎么写,麻烦也回复一下。这块的案例你们这边很少。找不到相关的资料。

参见官网:OceanBase分布式数据库-海量数据 笔笔算数

我理解官网里的第一个命令 $./obloader -h xx.x.x.x -P 2883 -u test@mysql#cluster_a -p ****** -D USERA --csv --table '*' -f /output 中的 --table ‘’ 就是一次性导入目录下的所有表,把 --table '’ 改成 --table ‘table_name_1,table_name_2’ 就是一次性导入多张表。

不好意思,我昨天晚上有事情没能及时回复你。

我没太理解你的 ctl 文件怎么写的意思,我不确定你的具体需求是什么?
官网上的内容可以解决你的问题吗?OceanBase分布式数据库-海量数据 笔笔算数

嗯嗯。。我们刚刚测试了批量导入的。是可以。文件名和表名一样就可以了。速度好像还挺快。谢谢大家。