大表查询数据库未返回

java通过jdbc连接方式访问数据库,大表查询提交给数据库,数据库没有返回,使用多个线程,时间长了线程会逐个慢慢死掉,是什么原因?

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

6 个赞

根据您的描述,看起来您遇到了OceanBase在通过Java JDBC访问执行大表查询时出现问题,表现为数据库没有返回结果并且多个线程随着时间逐渐变得无响应。这种情况可能涉及SQL性能、内存使用、IO问题等多个方面。

推荐使用obdiag工具

为帮助我们更准确地定位和解决这个问题,推荐使用obdiag工具来收集相关信息以及尝试自动分析潜在原因。以下是建议的命令及其说明:

  • 日志采集场景: SQL性能问题
  • 日志采集命令:
    obdiag gather scene run --scene=observer.perf_sql --env "{db_connect='-h<Your_Host> -P<Your_Port> -u<Your_User>@<Your_Tenant> -p<Your_Password> -D<Your_Database>', trace_id='<Optional_Trace_ID>'}"
    
    这条命令用于从您的系统中收集与SQL执行性能相关的数据,包括但不限于慢查询日志等。请将<Your_Host><Your_Port>等占位符替换为您实际使用的值。trace_id可选,如果您有特定事务或请求ID想要跟踪的话。

额外信息需求

为了进一步排查该问题,请提供以下额外的信息:

  1. 您正在使用的OceanBase具体版本是什么?
  2. 能否详细描述一下出现此问题的具体情境?例如,在什么时间点开始观察到异常?是否只有在执行某些特定查询或者当并发量达到一定程度后才发生?
  3. 是否能够复现此问题?如果有稳定的重现步骤,这对我们来说非常有价值。
  4. 发生问题前后,是否有进行过任何配置更改或者更新操作?
  5. 除了上述提到的大表查询,还有没有其他类型的查询也表现出类似的行为?
  6. 如果方便的话,请分享一些示例查询语句(去除敏感信息)以及相应的执行计划(如果有的话),这对理解问题背景很有帮助。
  7. 在问题发生期间,服务器端的日志文件(如告警日志、错误日志等)是否有记录任何异常?

收集完以上信息并通过执行提供的obdiag命令获取相关日志后,请将这些资料一并发送给我们,以便深入调查。谢谢!

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

2 个赞

是不是线程被阻塞、被超时断开、或资源耗尽后无法继续工作 没有jdbc的url 或者连接池的配置信息 数据库的SHOW FULL PROCESSLIST; 信息

1 个赞

超时了呗。

学习了

学到了不少新知识

依据呢?

超过默认的查询时间了吧,先看看sql有没有优化的空间