一千万数据 MERGE更新太慢,行存表测试更新十多分钟完成,列存要几个小时,有无更优方式啊,前台报表分析查询需要使用列存

【 使用环境 测试环境
【 OB or 其他组件 】
【 使用版本 】4.3.2
【问题描述】列存表MERGE更新太耗时,一千万左右的数据更新一个多小时未完成
【复现路径】问题出现前后相关操作,调整测试行存十几分钟
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

根据您的描述,您正在使用 OceanBase 4.3.2 版本处理列存表中的大量更新操作,遇到了更新耗时过长的问题。

针对这一情况,推荐使用 obdiag 工具进行日志采集,以便我们能够更好地了解当前集群的状态及可能存在的问题。

日志采集场景: 合并问题
日志采集命令: obdiag gather scene run --scene=observer.compaction

请您执行上述命令并将采集到的日志压缩包提供给我们,这将有助于我们进一步分析问题所在。

为了更准确地定位问题,请您提供以下信息:

  1. 您是否已经在批量导入数据后进行了合并操作?
  2. 当前正在进行的 MERGE 操作是否伴随着其他大量的读写操作?
  3. 您能否提供关于该列存表的数据量、分区情况以及索引结构的相关信息?
  4. 更新操作的具体 SQL 语句是什么样的?是否可以提供具体的 SQL 语句或其摘要信息?

详情请参考:

  1. 列存 FAQ
  2. 统计信息概述

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

可以考虑搞成行存+列存的混存表,这样merge的速度是和行存一样的。

关联更新如何选择 update 还是 merge into

https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000340648
你执行的语句 看看执行计划 执行计划是否走偏 执行计划的缓存是否命中

可以用obdiag 收集这个sql信息,我们分析下

也可以提个官方悬赏贴,会建一个群,可以和研发同学直接沟通

obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-hxx -Pxx -uxx -pxx -Dxx’, trace_id=‘xx’}”
obdiag文档
https://www.oceanbase.com/docs/common-obdiag-cn-1000000001214432
https://www.oceanbase.com/docs/common-obdiag-cn-1000000001102504