基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
关于查询超时变量
更新时间:2026-06-20 18:29:21
OceanBase 数据库的查询超时功能用于避免长时间不返回的查询长期占用工作线程资源以及可能占用 CPU 资源。
OceanBase 数据库租户内部执行查询的工作线程数跟租户的 CPU 个数相关,所以工作线程是很稀有的资源。如果查询长时间不返回,就会一直占用此工作线程资源。
OceanBase 数据库的查询超时时间默认由租户变量 ob_query_timeout 控制,默认值是 10000000(单位,微秒)。当查询时间超过该变量值后,会返回错误 -4012(HY000): Timeout。
超时变量的默认值对于 OLTP 类业务来说是合理的,但是对于 OLAP 类业务就不一定适用,这种情况下,用户可以选择在会话级别调整租户超时变量的值,或者使用 SQL Hint 设置查询超时时间。
示例 1:查看当前查询超时时间
obclient> SHOW VARIABLES LIKE 'ob_query_timeout';
+------------------+-----------+
| VARIABLE_NAME | VALUE |
+------------------+-----------+
| ob_query_timeout | 100000000 |
+------------------+-----------+
1 row in set
示例 2:在会话级别调整租户的查询超时时间
obclient> SET SESSION ob_query_timeout=1000000;
Query OK, 0 rows affected
obclient> SELECT COUNT(*) FROM h1, h2 , h3;
ERROR 4012 (HY000): Timeout
示例 3:使用 SQL Hint 设置查询超时时间
obclient> SELECT /*+ QUERY_TIMEOUT(100000000) */ COUNT(*) FROM h1, h2 , h3;
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
1 row in set
说明
生效范围仅限于当前 SQL 语句。