OB版本4.2.1.8,从一张大表向另一张表全量插入慢

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1
【问题描述】4张表合并到一张表,A表数据1200w行,全量向B表插入到B表,B为空表,执行了1个小时,有批量插入的高效方法吗?
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

3 个赞

在这个问题中,用户提到的是关于在OceanBase数据库中进行大量数据插入操作时的性能问题。虽然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性能的相关日志,这将有助于我们分析是否有优化的空间。同时,为了更有效地帮助您解决问题,请提供以下信息:

  1. 插入数据的表结构定义,包括列类型、索引等信息。
  2. 插入数据的SQL语句或脚本。
  3. 表中已有的数据量大小。
  4. 您当前使用的硬件配置信息,如CPU、内存、磁盘等。
  5. 插入操作是否在一个事务中完成,还是分批提交。
  6. 是否有其他应用程序在同一时间对目标表进行读写操作。
  7. 插入数据期间,OceanBase实例的CPU、内存和I/O使用情况如何?
  8. 插入操作的具体耗时,以及是否总是表现得如此缓慢。

以上信息将帮助我们更好地理解您的问题,并给出更为精确的优化建议。感谢您的配合!

附上敏捷诊断工具 obdiag 使用帮助链接

4 个赞

INSERT /+ENABLE_PARALLEL_DML PARALLEL(8)/ INTO 开启PDML试下,看下插入的效率会不会提升

4 个赞


怎么回复消息 * 给弄没了

3 个赞

这点数据量,旁路导入,不到一分钟可以搞定了啊,除非你规格很小很小很小,以及大宽表

4 个赞

谢谢,我试一下

4 个赞

你好,我新手,请问旁路导入 表到表 怎么用?用obloader吗?格式是什么样的,请赐教:pray:

4 个赞

旁路导入的方法有很多种,简单的通过HINT来实现 INSERT /*+ENABLE_PARALLEL_DML PARALLEL(8) APPEND * / INTO ,使用时候要打开自动提交 set autocommit=1;

5 个赞

使用 INSERT INTO SELECT 语句旁路导入数据-V4.2.1-OceanBase 数据库文档-分布式数据库使用文档

4 个赞

如果只上线做一次的话用bulk load导出导入感觉会更快一些

4 个赞

旁路导入因为没有日志,这就是快的原因呀?

4 个赞

旁路导入不走日志

1 个赞