---
title: SQL 在数据库中的执行时间超过 OB_QUERY_TIMEOUT 的原因-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 SQL 在数据库中的执行时间超过 OB_QUERY_TIMEOUT 的原因相关的常见问题和使用技巧，帮助您快速解决 SQL 在数据库中的执行时间超过 OB_QUERY_TIMEOUT 的原因的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# SQL 在数据库中的执行时间超过 OB_QUERY_TIMEOUT 的原因

更新时间：2026-05-15 09:06

适用版本： V1.4.x、V2.1.x、V2.2.x、V3.1.x、V3.2.x、V4.0.x、V4.1.x、V4.2.x 内容类型：TechNote  

Session 变量 `ob_query_timeout` 控制一条 SQL 在数据库中运行的最大时间。如果 SQL 因为租户队列满而排队，排队的时间是不计入执行时间的，因此就可能出现 SQL 在数据库中的总时间大于 `ob_query_timeout` 的现象。

每个租户都有固定数量的 worker 线程来执行 SQL。当 SQL 请求数量大于 worker 线程数量时，OceanBase 数据库会将一些 SQL 放入到队列里等待 worker 线程。队列里排队的 SQL 越多，SQL 排队的时间越长。但是，这并不意味着 SQL 可以在队列里无限等待。ODP 也有 SQL 超时机制，默认设置下，ODP 的 SQL 超时时间是 `ob_query_timeout` + 20s。假如 `ob_query_timeout=10s`，当一条 SQL 经过 ODP 发送到 OBServer 后，该 SQL 最多会在 OBServer 中等待/执行 30s 后被 ODP 做超时处理，即发送给应用 SQL 超时的报错并中断链接。

此外，除了 SQL 的 worker 线程外，PX 并行访问也有线程数量的限制。对于指定 Parallel(N) 进行并发访问的 SQL，如果 PX 线程数量不满足 N 的要求，可能也会出现等待的现象。与等待 worker 线程不同的是，等待 PX 线程的时间是计入 `ob_query_timeout` 中的。

## 适用版本

OceanBase 数据库所有版本。

Previous

[收集统计信息前的计划为何会不稳定？](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001048742)

Next

[SQL 中使用 utl_raw.cast_to_raw 函数无法同时使用并行](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000217867) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
