【问题现象】

在客户测试过程中,同一份约 290MB 的数据文件,使用 imp 工具导入 YashanDB 时,耗时差距巨大:
image.png

【影响版本】

客户测试环境版本:22.2.8.3

【原因分析】

YashanDB 的 imp 工具在执行导入操作时,本质上是:

将导入文件中的每条 SQL 一条一条通过网络传输给数据库执行。

这就带来了两个问题:

高频交互:每条 SQL 都会单独发起一次网络交互,交互次数远高于流式批处理;

网络延迟放大效应:在跨机、跨网段的环境中,即使延迟只有几十毫秒,乘以成千上万条语句后,也会导致整体导入时间急剧拉长。

【优化建议】

推荐做法:将导入文件提前上传至数据库服务器本机

操作建议:

将 .imp 导入文件使用 scp / ftp 等方式传输至 YashanDB 所在服务器;

登录服务器后,使用本地路径执行导入:

yasimp -f /data/tmp/data.imp -u user -p pass

这样所有 SQL 执行将在本地完成,避免频繁网络调用,大幅提升导入效率。

【经验总结】

从导入机制来看,imp 工具本身并不适合用于跨网络高延迟环境的大数据量导入。

建议将导入操作优化为:

文件传输 + 本地执行两步走策略。

如后续产品层面可考虑支持类似 Oracle 的 DIRECT PATH 模式,将文件上传后,由数据库端进行解析与批处理式导入,可进一步缓解导入瓶颈。

【表格对比:本地导入 vs 跨机导入】

image.png
【总结建议】

避免使用 imp 跨网络执行数据导入;

尽可能将数据文件放置于数据库服务器本地再执行导入;

后续可考虑开发远程文件上传 + 本地导入一体化功能,减少操作步骤并提升体验。


数据库砖家
1 声望0 粉丝