【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】OB For MySQL, 5.7.25-OceanBase CE-v4.2.1.4
【问题描述】程序中,会有一段操作实表临时表的步骤,先delete临时表(delete tableA where userid = xxx),然后对表进行insert…select …from tableA …,此时insert就会卡住,大概要执行80s,插入0条或者1条数据。如果只是select,只需要0.05s左右。java程序稳定复现,命令行不稳定复现。
【复现路径】
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
论坛小助手
#3
推荐使用 obdiag 工具进行根因分析和日志采集,这可以帮助我们定位问题并找到解决方案。请尝试以下操作,并将采集到的日志提供给我们。
根因分析场景: SQL性能问题
根因分析命令: obdiag rca run --scene=sql_performance --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”
日志采集场景: SQL性能问题
日志采集命令: obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-h127.0.0.1 -P2881 -utest@test -p****** -Dtest’, trace_id=‘Yxx’}”
上述命令中的 trace_id
需要替换为您执行 insert...select
操作时的具体 trace_id
,可以通过 show processlist;
获取当前执行的 SQL 的 trace_id
。
为了更好地帮助您解决问题,请您提供一些额外的信息:
- 可以提供执行
insert...select
语句前后 tableA
的表结构吗?例如通过 show create table tableA\G
命令获取。
-
tableA
表的数据量是多少?可以提供表的大概行数吗?
- 在执行
insert...select
操作时,系统是否有大量的并发操作?
-
delete
临时表和 insert...select
操作之间是否有其他操作?如果有,请详细说明。
- 是否可以提供执行
delete
和 insert...select
操作的完整 SQL 语句?
- 该问题是否在某个特定的时间段内更容易出现?如果有,请提供时间段信息。
- 是否已经检查过系统的 IO 负载情况?如果有,请提供相关信息。
附上敏捷诊断工具 obdiag 使用帮助链接
淇铭
#4
ob应该没有临时表的功能 如果频繁操作可以创建queuing表
1 个赞