---
title: "全局 Hint 类型下的其他 Hint - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: 全局 Hint 类型下的其他 Hint 全局 Hint 类型下的其他 Hint 允许开发者和数据库管理员对 SQL 语句的执行进行细粒度的控制。所支持的其他类型 Hint 如下： Hint 名称 解释 APPEND INSERT 的同时收集统计信息； INSERT INTO SELECT 中开启旁路模式（DIRECT…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.1 LTS

# 全局 Hint 类型下的其他 Hint

更新时间：2026-07-15 22:01:30

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/300.basic-elements-of-oracle-mode/600.annotation-of-oracle-mode/400.hint-of-oracle-mode/200.hint-list-of-oracle-mode/100.global-hint-of-oracle-mode/300.other-global-hints-of-oracle-mode.md)  

全局 Hint 类型下的其他 Hint 允许开发者和数据库管理员对 SQL 语句的执行进行细粒度的控制。所支持的其他类型 Hint 如下：

| Hint 名称 | 解释 |
| --- | --- |
| `APPEND` | INSERT 的同时收集统计信息；`INSERT INTO SELECT` 中开启旁路模式（DIRECT INSERT）。 |
| `CURSOR_SHARING_EXACT` | 控制查询是否参数化。 |
| `DIRECT` | 指定启用旁路导入功能，且仅在 `LOAD DATA` 中使用。 |
| `DISABLE_PARALLEL_DML` | 禁用 并行 DML。 |
| `ENABLE_PARALLEL_DML` | 启用 并行 DML。 |
| `DYNAMIC_SAMPLING` | 开启动态采样。 |
| `FROZEN_VERSION` | 指定读取特定版本数据。 |
| `LOAD_BATCH_SIZE` | 用于指定每次插入的批量大小，且仅在 LOAD DATA 中使用。 |
| `LOG_LEVEL` | 用于指定当前查询在执行过程中记录的日志级别。 |
| `MAX_CONCURRENT` | 设置查询允许最大并发数。 |
| `MONITOR` | 用于对查询开启捕获查询执行 SQL Plan Monitor 记录。 |
| `OPT_PARAM` | 设置查询级别优化器相关参数。 |
| `PARALLEL` | 设置查询级别并行度。它的反向操作为 `NO_PARALLEL`。 |
| `NO_PARALLEL` | 关闭查询并行 （即设置并行度为 1）。 |
| `QUERY_TIMEOUT` | 设置查询执行超时时间。 |
| `READ_CONSISTENCY` | 读一致性级别设置(强/弱)。 |
| `STAT` | 追踪查询算子输出统计 。 |
| `TRANS_PARAM` | 设置查询级别事务相关变量值。 |
| `TRACING` | 追踪查询执行算子输出。 |
| `USE_PLAN_CACHE` | 用于指定当前查询的计划缓存（Plan Cache）使用策略。 |

## `APPEND` Hint

`APPEND` Hint 指定 `INSERT INTO SELECT` 开启旁路导入功能。更多信息，参见[使用 `INSERT INTO SELECT` 语句旁路导入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218025)。

### 语法

```sql
/*+ APPEND */

```

### 示例

```sql
INSERT /*+ append enable_parallel_dml parallel(16) */ INTO t2
SELECT * FROM t1;

```

## `CURSOR_SHARING_EXACT` Hint

`CURSOR_SHARING_EXACT` Hint 用于指定查询级别禁止参数化。

OceanBase 数据库支持使用绑定变量替换 SQL 语句中的字面量，此功能由 `CURSOR_SHARING` 变量控制，即当`cursor_sharing='exact'` 时，不需要参数化。详细信息，请参见 [cursor_sharing](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220791)。

### 语法

```sql
/*+ CURSOR_SHARING_EXACT */

```

### 示例

下方的查询示例中，使用 `CURSOR_SHARING_EXACT` Hint 禁止参数化，使用两组参数执行 4 次后，PLAN CACHE 中对不同参数生成了两个查询计划。

```sql
alter system flush plan cache global;
SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=5;
SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=5;
SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=6;
SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=6;

SELECT sql_id, plan_id, statement FROM oceanbase.gv$ob_plan_cache_plan_stat where query_sql like "SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=%";
+----------------------------------+---------+---------------------------------------------------------+
| sql_id                           | plan_id | statement                                               |
+----------------------------------+---------+---------------------------------------------------------+
| E024EB33213BF501D4CA7ABB81A195B5 |   13249 | SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=5 |
| E024EB33213BF501D4CA7ABB81A195B5 |   13250 | SELECT /*+ CURSOR_SHARING_EXACT */ * FROM t1 WHERE c1=6 |
+----------------------------------+---------+---------------------------------------------------------+

```

## `DIRECT` Hint

`DIRECT` Hint 在 `LOAD DATA` 中指定启用旁路导入功能。

`LOAD DATA` 中使用 `DIRECT` Hint 开启旁路导入功能示例如下，详细介绍详见 [LOAD DATA](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000221387)。

### 语法

```sql
/*+ DIRECT ( need_sort, int_num ) */

```

#### 参数解释

`DIRECT` Hint 中的参数释义如下：

- `need_sort` 参数表示给定的 *CSV* 文件是否需要排序。
 - `int_num` 给定最大容忍的错误行数。

### 示例

```sql
LOAD DATA
  /*+ PARALLEL(1) DIRECT(FALSE, 0) */
  REMOTE_OSS INFILE 'oss://antsys-oceanbasebackup/backup_rd/xiaotao.ht/lineitem2.tbl?host=***.oss-cdn.***&access_id=***&access_key=***'
  INTO TABLE lineitem
  FIELDS TERMINATED BY '|'
  ENCLOSED BY ''
  LINES STARTING BY ''
  TERMINATED BY '\n';

```

## `DYNAMIC_SAMPLING` Hint

`DYNAMIC_SAMPLING` Hint 指定查询是否开启动态采样。

### 语法

```sql
/*+ DYNAMIC_SAMPLING ( 0 | 1 ) */

```

#### 参数解释

`DYNAMIC_SAMPLING` Hint 中的参数释义如下：：

- 参数为 0 时禁止动态采样。
 - 参数为 1 时开启动态采样。

### 示例

下方的查询示例中，使用 `DYNAMIC_SAMPLING` Hint 开启动态采样。

```sql
SELECT /*+ dynamic_sampling(1) */ *
FROM t1 WHERE c1 LIKE "%abc%" AND c2 LIKE "%abc%";

```

## `ENABLE_PARALLEL_DML` Hint

`ENABLE_PARALLEL_DML` Hint 指定当前查询开启并行 DML，其反向 Hint 为 `DISABLE_PARALLEL_DML`，用于禁止并行 DML。

详细信息，参见 [并行 DML](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218925)。

### 语法

```sql
/*+ ENABLE_PARALLEL_DML */

```

### 示例

下方的查询示例中，使用 `ENABLE_PARALLEL_DML` Hint 开启 PDML。

```sql
INSERT /*+ enable_parallel_dml parallel(8) */ INTO t2 SELECT * FROM t1;

```

## `DISABLE_PARALLEL_DML` Hint

`DISABLE_PARALLEL_DML` Hint 禁用当前查询开启并行 DML，其反向 Hint 为 `ENABLE_PARALLEL_DML`，用于启用并行 DML。

### 语法

```sql
/*+ DISABLE_PARALLEL_DML */

```

### 示例

下方的查询示例中，使用 `DISABLE_PARALLEL_DML` Hint 禁用 PDML。

```sql
INSERT /*+ disable_parallel_dml parallel(8) */ INTO t2 SELECT * FROM t1;

```

## `FROZEN_VERSION` Hint

`FROZEN_VERSION` Hint 指定当前查询读取特定版本的数据。

### 语法

```sql
/*+ FROZEN_VERSION ( intnum ) */

```

#### 参数解释

- `intnum`：指定需要读取数据的版本。

### 示例

下方查询示例，通过 `FROZEN_VERSION` Hint 指定读取数据版本，表示查询操作将在数据版本号 1000 上执行。

```sql
SELECT /*+ FROZEN_VERSION(1000) */ *
FROM employees e
WHERE e.department_id = 1001;

```

## `LOAD_BATCH_SIZE` Hint

`LOAD_BATCH_SIZE` Hint 在 `LOAD DATA` 中用于指定每次插入的批量记录的大小。

`LOAD_BATCH_SIZE` Hint 中 `batch_size` 指定每次插入批量记录的大小。 `LOAD DATA` 相关介绍可以查看 [LOAD DATA 介绍](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000222043)。

### 语法

```sql
/*+ LOAD_BATCH_SIZE ( batch_size ) */

```

### 示例

```sql
-- 使用 4 个并行进程来导入数据，将新数据追加到表的末尾，并且通过 `LOAD_BATCH_SIZE` Hint 设定每个批次处理 1000 条记录
LOAD DATA /*+ PARALLEL(4) APPEND LOAD_BATCH_SIZE(1000) */
INFILE '/home/admin/test.csv' INTO TABLE t1;

```

## `LOG_LEVEL` Hint

`LOG_LEVEL` Hint 用于指定当前查询在执行过程中记录的日志级别。

LOG_LEVEL Hint 参数中 `log_level`指定日志级别, 常用的日志级别包括 `ERROR`/`WARN`/`INFO`/`TRACE`/`DEBUG`。

更多关于日志级别的释义，参见[日志级别](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218063)。

### 语法

```sql
/*+ LOG_LEVEL ( [']log_level['] ) */

```

### 示例

```sql
--使用 LOG_LEVEL Hint 指定使用 `TRACE` 级别日志。
SELECT /*+ LOG_LEVEL(TRACE) */ *
FROM employees e
WHERE e.department_id = 1001;

```

## `MAX_CONCURRENT` Hint

`MAX_CONCURRENT` Hint 用于指定查询执行的最大并发数。

`MAX_CONCURRENT` Hint 中参数 `intnum` 为指定的查询允许的最大并发数。当查询并发数超出允许的最大并发数时，查询执行会报错到达最大并发数。当 `intnum` 指定为 0 时，查询执行总是报错。

需要注意的是，目前 `MAX_CONCURRENT` Hint 无法直接使用在查询中，只能够创建仅包含 `MAX_CONCURRENT` Hint 的 outline 用于查询限流，对特定 SQL_ID 使用 `MAX_CONCURRENT` 进行限流。

### 语法

```sql
/*+ MAX_CONCURRENT ( intnum ) */

```

### 示例

```sql
-- 此查询创建了 Outline otl1 关联到标识符为 'EC102CB006383D732BC98797601D9B3B' 的查询，并且指定了对应查询的最大并发执行数为 10
CREATE OUTLINE otl1 ON 'EC102CB006383D732BC98797601D9B3B'
USING HINT /*+ max_concurrent(10) */;

```

## `MONITOR` Hint

`MONITOR` Hint 用于对查询开启捕获查询执行 SQL Plan Monitor 记录，您可以使用 `MONITOR` Hint 将其执行过程记录在 SQL Plan Monitor 中。

对于没有开启并行执行的查询，OceanBase 则不会将其执行过程记录在 SQL Plan Monitor 中。

SQL Plan Monitor 相关介绍见 [实时执行计划展示](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218935) 中**实时 SQL Plan Monitor** 章节。

### 语法

```sql
/*+ MONITOR */

```

### 示例

```sql
-- 使用 MONITOR Hint 开启 SQL Plan Monitor 记录。
SELECT /*+monitor*/ c1, SUM(distinct c2) FROM t1 GROUP BY c1;

```

## `NO_PARALLEL` Hint

`NO_PARALLEL` Hint 指定关闭查询并行 （即设置并行度为 1）。其反向 Hint 是 `PARALLEL` Hint。

`NO_PARALLEL` Hint 与 `/*+ parallel(1)*/` 等价。

### 语法

```sql
/*+ NO_PARALLEL */

```

### 示例

下方的查询示例中，使用 `NO_PARALLEL` Hint 关闭查询并行。

```sql
SELECT /*+ no_parallel */ c1, sum(distinct c2) FROM t1 GROUP BY c1;

```

## `NO_QUERY_TRANSFORMATION` Hint

`NO_QUERY_TRANSFORMATION` Hint 禁止对当前查询进行任何查询改写。

需要注意的是，区别于 Query Block Hint 中的 `NO_REWRITE` Hint，使用 `NO_QUERY_TRANSFORMATION` 无法使用 Query Block Hint 开启一些改写。

有关查询改写，参见[查询改写概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220964)。

### 语法

```sql
/*+ NO_QUERY_TRANSFORMATION */

```

### 示例

下方的查询示例中，使用 `NO_QUERY_TRANSFORMATION` Hint 禁止任何查询改写。

```sql
SELECT /*+ NO_QUERY_TRANSFORMATION */ *
FROM (SELECT * FROM t1) v WHERE v.c1 = 3;

```

## `OPT_PARAM` Hint

`OPT_PARAM` Hint 指定在查询级别更新一些优化器相关的配置项/系统变量。

### 语法

```sql
/*+ OPT_PARAM ( param_name, param_value) */

```

#### 参数解释

- `param_name`：指定配置项/系统变量名。当前仅支持 [`workarea_size_policy`](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220398)。
 - `param_value`：指定需要指定的变量值。

### 示例

下方的查询示例中，使用 `OPT_PARAM` Hint 指定 `workarea_size_policy` 值对当前查询设置手动调整 SQL 工作区大小的策略。

```sql
SELECT /*+ opt_param('workarea_size_policy', 'manule') */ *
FROM t1
where c1 in (1,2,3,4,5,...,1000)
  and c2 in (1,2,3,4,5,...,1000);

```

## `PARALLEL` Hint

`PARALLEL` Hint 作为全局 Hint 时可以指定当前查询使用的并行度或并行开启策略。

`PARALLEL` Hint 除了作为全局 Hint 外，还可以作为查询块 Hint 指定表级别的并行度，详见 [Access Path Hints](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002892912) 中 `Parallel` hint 相关内容。

### 语法

```sql
/*+ PARALLEL ( AUTO | MANUAL | parallel_degree) */

```

#### 参数解释

- `AUTO` 或 `MANUAL`：`PARALLEL` Hint 中使用 `AUTO`或 `MANUAL` 作为参数时，仅指定并行执行开启策略，详见[并行开启方式及优先级](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218926)。
 - `parallel_degree`：`PARALLEL` Hint 中使用 `parallel_degree` 作为参数时，可以直接指定并行度时。

### 示例

下方的查询示例中，使用 `PARALLEL` Hint 指定使用并行度 DOP = 8 或指定开启 Auto DOP。

```sql
SELECT /*+parallel(8)*/ c1, SUM(distinct c2) FROM t1 GROUP BY c1;

SELECT /*+parallel(auto)*/ c1, SUM(distinct c2) FROM t1 GROUP BY c1;

```

> 注意：一些场景不支持并行执行，即使通过 PARALLEL 指定开启并行，执行计划仍可能禁用并行执行。

## `QUERY_TIMEOUT` Hint

`QUERY_TIMEOUT` Hint 指定当前查询的执行超时时间。

### 语法

```sql
/*+ QUERY_TIMEOUT ( time_usec ) */

```

#### 参数解释

- `time_usec`：指查询超时时间，单位为微秒。

### 示例

```sql
--指定查询超时时间为 1 秒，该查询在指定超时时间内未执行完成将返回超时错误。
SELECT /*+ QUERY_TIMEOUT(1000000) */ *
FROM employees e
WHERE e.department_id = 1001;

```

## `READ_CONSISTENCY` Hint

`READ_CONSISTENCY` Hint 指定当前查询的读一致性级别。

### 语法

```sql
/*+ READ_CONSISTENCY(WEAK[STRONG]) */

```

#### 参数解释

- `WEAK`：开启使用弱一致性，即开启弱读。
 - `STRONG`：开启使用强一致性，即关闭弱读。

### 示例

```sql
--使用 READ_CONSISTENCY Hint 并设置为 WEAK，指定查询开启弱读。
SELECT /*+ READ_CONSISTENCY(WEAK) */ *
FROM employees
WHERE employees.department_id = 1001;

```

## `STAT` Hint

`STAT` Hint 指定对查询计划中特定算子输出进行追踪。

添加 `STAT` Hint 后，查询计划中会分配 `MONITORING DUMP` 算子，该算子直接输出排序算子的所有数据，并在执行结束后将算子执行时间、输出行数等信息打印在 observer 日志中。

### 语法

```sql
/*+ STAT(TRACING_NUM_LIST) */

```

#### 参数解释

- `TRACING_NUM_LIST`：为需要追踪算子的 ID 列表。

### 示例

```sql
-- 添加 Hint `/*+ STAT(0, 2) */` 前后执行计划变化情况
explain basic
SELECT /*+leading(t1) use_hash(t2)*/ * FROM t1, t2 WHERE t1.c1 = t2.c1;

Query Plan
===========================
|ID|OPERATOR         |NAME|
---------------------------
|0 |HASH JOIN        |    |
|1 |├─TABLE FULL SCAN|T1  |
|2 |└─TABLE FULL SCAN|T2  |
===========================

explain basic
SELECT /*+leading(t1) use_hash(t2) stat(0, 2)*/ *
FROM t1, t2 where t1.c1 = t2.c1;
Query Plan
===============================
|ID|OPERATOR             |NAME|
-------------------------------
|0 |MONITORING DUMP      |    |
|1 |└─HASH JOIN          |    |
|2 |  ├─TABLE FULL SCAN  |T1  |
|3 |  └─MONITORING DUMP  |    |
|4 |    └─TABLE FULL SCAN|T2  |
===============================

```

## `TRANS_PARAM` Hint

`TRANS_PARAM` Hint 用于在查询级别指定事务相关的参数。

### 语法

```sql
/*+ TRANS_PARAM ['FORCE_EARLY_LOCK_FREE' , 'TRUE'] */

```

#### 参数解释

现在支持的参数只有事务层面的提前解行锁 `FORCE_EARLY_LOCK_FREE` 参数。

- `FORCE_EARLY_LOCK_FREE`：取值为 **TRUE** 时，表示支持， **FALSE** 表示不支持。

**注意**：这里的参数名和参数值要用单引号（' '）引起来，当参数的值为数值型时可以不用引号引起来。

### 示例

```sql
-- 使用 TRANS_PARAM Hint 并设置参数 'FORCE_EARLY_LOCK_FREE' 为 'TRUE'，指定事务层面提前解行锁。
SELECT /*+ TRANS_PARAM('FORCE_EARLY_LOCK_FREE' 'TRUE') */ *
FROM employees e
WHERE e.department_id = 1001;

```

## `TRACING` Hint

`TRACING` Hint 指定对查询计划中特定算子输出进行追踪。

`TRACING` Hint 的使用方式、添加 Hint 后的计划形态和使用 `STAT` Hint 时完全相同。

与使用 `STAT` Hint 的区别在于，使用 `TRACING` Hint 时 `MONITORING DUMP` 算子会将其所有输出数据打印在 observer 日志中。

### 语法

```sql
/*+ TRACING(TRACING_NUM_LIST)*/

```

### 示例

```sql
-- 使用 TRACING Hint 并设置级别为 1，启用对当前查询的跟踪
SELECT /*+ TRACING(1) */ *
FROM employees e
WHERE e.department_id = 1001;

```

## `USE_PLAN_CACHE` Hint

`USE_PLAN_CACHE` Hint 用于指定当前查询的计划缓存（Plan Cache）使用策略，更多有关计划缓存的信息，参见[执行计划缓存](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218936)。

### 语法

```sql
/*+ USE_PLAN_CACHE ( NONE | DEFAULT ) */

```

#### 参数解释

- `NONE`：指定查询不使用计划缓存。
 - `DEFAULT`：指定当前查询使用系统变量 [`ob_enable_plan_cache`](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220764) 控制计划缓存策略。

### 示例

```sql
-- 使用参数 `NONE`时指定查询不使用计划缓存，使用参数 `DEFAULT`时指定当前查询使用系统变量 `ob_enable_plan_cache` 控制计划缓存策略。
SELECT /*+ USE_PLAN_CACHE(NONE) */ *
FROM employees e
WHERE e.department_id = 1001;

SELECT /*+ USE_PLAN_CACHE(DEFAULT) */ *
FROM employees e
WHERE e.department_id = 1001;

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
