【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】
在使用obclient连接数据库,通过source执行sql文件,文件中包含create table语句和大量的insert into … values 语句,目前一个300M的文件。需要执行十多个小时。请问可以通过什么优化
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
2 个赞
论坛小助手
#3
推荐使用 obdiag 工具进行日志采集,以便我们确认问题所在。
日志采集场景: SQL性能问题
日志采集命令: obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”
请将采集到的日志提供给我们以便进一步分析。另外,为了更好地帮助您优化执行速度,请您提供以下信息:
- 执行的 SQL 文件中包含的 DDL 和 INSERT 语句的大致数量是多少?
- 是否可以提供具体的 SQL 文件内容(如果文件较大,可以提供部分示例)?
- 在执行过程中,是否观察到任何错误或警告信息?
- 当前 OceanBase 数据库的版本号是什么?
- 是否可以提供执行该 SQL 文件时的负载情况(例如是否有其他并发任务在运行)?
附上敏捷诊断工具 obdiag 使用帮助链接
3 个赞
使用source的方式慢是正常的 建议使用OBLoader
3 个赞
shigp
#5
基于ob lsm 写原理,source 批量数据是会很慢的,可以试下obload 方式
3 个赞
咖啡哥
#6
如果SQL之间没有先后依赖关系,可以把sql文件拆分成多个。同时执行。例如:
–10000行一个文件,文件名数字两位
split -l 10000 -d -a 2 create_index.sql create_index_
4 个赞
辞霜
#7
可以考虑使用obloader导入sql文件开并行方式
1 个赞