---
title: "gv$sql_audit | OceanBase 文档中心"
description: gv$sql_audit 功能 展示所有 OBServer 上每一次 SQL 请求的来源、执行状态等统计信息。该视图是按照租户拆分的，除了系统租户，其他租户不能跨租户查询。 字段说明 字段名称 类型 是否可以为 NULL 描述 SVR_IP varchar(46) NO IP 地址 SVR_PORT bigint(2…
---
切换语言

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

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

# gv$sql_audit

更新时间：2026-06-08 19:52:03

## 功能

展示所有 OBServer 上每一次 SQL 请求的来源、执行状态等统计信息。该视图是按照租户拆分的，除了系统租户，其他租户不能跨租户查询。

## 字段说明

| **字段名称** | **类型** | **是否可以为 NULL** | **描述** |
| --- | --- | --- | --- |
| SVR_IP | varchar(46) | NO | IP 地址 |
| SVR_PORT | bigint(20) | NO | 端口号 |
| REQUEST_ID | bigint(20) | NO | 请求的 ID 号 |
| SQL_EXEC_ID | bigint(20) | NO | 本次执行的 ID |
| TRACE_ID | varchar(128) | NO | 该语句的 trace_id |
| SID | bigint(20) unsigned | NO | Session 连接 ID |
| CLIENT_IP | varchar(46) | NO | - 当客户端通过 ODP 与 OBServer 连接时，表示转发请求的 ODP 的 IP - 当客户端直接与 OBServer 连接时，表示发送请求的客户端的 IP |
| CLIENT_PORT | bigint(20) | NO | 发送请求的客户端端口号 |
| TENANT_ID | bigint(20) | NO | 发送请求的租户 ID |
| TENANT_NAME | varchar(64) | NO | 发送请求的租户名称 |
| EFFECTIVE_TENANT_ID | bigint(20) | NO | 租户 ID |
| USER_ID | bigint(20) | NO | 发送请求的用户 ID |
| USER_NAME | varchar(64) | NO | 发送请求的用户名称 |
| USER_GROUP | bigint(20) | YES | 用户所属资源组 ID |
| USER_CLIENT_IP | varchar(46) | NO | 发送请求的客户端的 IP |
| DB_ID | bigint(20) unsigned | NO | 数据库 ID |
| DB_NAME | varchar(128) | NO | 数据库名称 |
| SQL_ID | varchar(32) | NO | 该 SQL 的 ID |
| QUERY_SQL | longtext | NO | 实际的 SQL 语句 |
| PLAN_ID | bigint(20) | NO | 执行计划的 ID |
| AFFECTED_ROWS | bigint(20) | NO | 影响行数 |
| RETURN_ROWS | bigint(20) | NO | 返回行数 |
| PARTITION_CNT | bigint(20) | NO | 该请求涉及的分区数 |
| RET_CODE | bigint(20) | NO | 执行结果返回码： - 0：表示没有错误，语句成功执行 - 其他返回码：表示 OceanBase 错误码。有关错误码的详细介绍，请参见 [错误码](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000946160) |
| QC_ID | bigint(20) unsigned | NO | 并行执行场景下，调度器 ID |
| DFO_ID | bigint(20) | NO | 并行执行场景下，当前执行的子计划 ID |
| SQC_ID | bigint(20) | NO | 并行执行场景下，本地协调器 ID |
| WORKER_ID | bigint(20) | NO | 并行执行场景下，工作线程 ID |
| EVENT | varchar(64) | NO | 最长等待事件名称 |
| P1TEXT | varchar(64) | NO | 等待事件参数 1 |
| P1 | bigint(20) unsigned | NO | 等待事件参数 1 的值 |
| P2TEXT | varchar(64) | NO | 等待事件参数 2 |
| P2 | bigint(20) unsigned | NO | 等待事件参数 2 的值 |
| P3TEXT | varchar(64) | NO | 等待事件参数 3 |
| P3 | bigint(20) unsigned | NO | 等待事件参数 3 的值 |
| LEVEL | bigint(20) | NO | 等待事件的级别 |
| WAIT_CLASS_ID | bigint(20) | NO | 等待事件所属的 Class ID |
| WAIT_CLASS# | bigint(20) | NO | 等待事件所属的 Class 的下标 |
| WAIT_CLASS | varchar(64) | NO | 等待事件所属的 Class 名称 |
| STATE | varchar(19) | NO | 等待事件的状态 |
| WAIT_TIME_MICRO | bigint(20) | NO | 该等待事件所等待的时间，单位：微秒 |
| TOTAL_WAIT_TIME_MICRO | bigint(20) | NO | 执行过程所有等待的总时间，单位：微秒 |
| TOTAL_WAITS | bigint(20) | NO | 执行过程总等待的次数 |
| RPC_COUNT | bigint(20) | NO | 发送的 RPC 个数 |
| PLAN_TYPE | bigint(20) | NO | 执行计划类型： - 1：本地执行计划（Local） - 2：远程执行计划（Remote） - 3：分布式执行计划（Distribute） |
| IS_INNER_SQL | tinyint(4) | NO | 是否为内部 SQL 请求 |
| IS_EXECUTOR_RPC | tinyint(4) | NO | 当前请求是否为 RPC 请求 |
| IS_HIT_PLAN | tinyint(4) | NO | 是否命中 plan_cache |
| REQUEST_TIME | bigint(20) | NO | 开始执行时间点 |
| ELAPSED_TIME | bigint(20) | NO | 接收到请求到执行结束所消耗的总时间 |
| NET_TIME | bigint(20) | NO | 发送 RPC 到接收到请求的时间 |
| NET_WAIT_TIME | bigint(20) | NO | 接收到请求到进入队列的时间 |
| QUEUE_TIME | bigint(20) | NO | 请求在队列的等待时间 |
| DECODE_TIME | bigint(20) | NO | 出队列后 Decode 的时间 |
| GET_PLAN_TIME | bigint(20) | NO | 开始 Process 到获得计划的时间 |
| EXECUTE_TIME | bigint(20) | NO | 计划执行所消耗的时间 |
| APPLICATION_WAIT_TIME | bigint(20) unsigned | NO | 所有 Application 类事件的总时间 |
| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | NO | 所有 Concurrency 类事件的总时间 |
| USER_IO_WAIT_TIME | bigint(20) unsigned | NO | 所有 user_io 类事件的总时间 |
| SCHEDULE_TIME | bigint(20) unsigned | NO | 所有 Schedule 类事件的时间 |
| ROW_CACHE_HIT | bigint(20) | NO | 行缓存命中次数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | NO | Bloom Filter 缓存命中次数 |
| BLOCK_CACHE_HIT | bigint(20) | NO | 块缓存命中次数 |
| BLOCK_INDEX_CACHE_HIT | bigint(20) | NO | 块索引缓存命中次数 |
| DISK_READS | bigint(20) | NO | 物理读次数 |
| RETRY_CNT | bigint(20) | NO | 重试次数 |
| TABLE_SCAN | tinyint(4) | NO | 判断该请求是否含全表扫描 |
| CONSISTENCY_LEVEL | bigint(20) | NO | 一致性级别 |
| MEMSTORE_READ_ROW_COUNT | bigint(20) | NO | MemStore 中的读行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) | NO | SSStore 中连读的行数 |
| REQUEST_MEMORY_USED | bigint(20) | NO | 该请求消耗的内存 |
| EXPECTED_WORKER_COUNT | bigint(20) | NO | 请求期望的工作线程数 |
| USED_WORKER_COUNT | bigint(20) | NO | 请求实际使用的工作线程数 |
| SCHED_INFO | varchar(16384) | YES | 请求的调度信息 |
| FUSE_ROW_CACHE_HIT | bigint(20) | NO | 暂不支持该字段，字段默认为 NULL |
| PS_CLIENT_STMT_ID | bigint(20) | NO | 请求对应的 Prepare ID：   - `-1`：表示 SQL 语句没有使用 PS 协议 - 非 `-1`：表示 SQL 语句使用了 PS 协议，为 PS 协议在客户端对该语句返回的唯一标志 |
| PS_INNER_STMT_ID | bigint(20) | NO | 请求对应的 Prepare ID：   - `-1`：表示 SQL 语句没有使用 PS 协议 - 非 `-1`：表示 SQL 语句使用了 PS 协议，为 PS 协议在内部对该语句返回的唯一标志 |
| TRANSACTION_HASH | bigint(20) unsigned | NO | 请求对应的事务的 Hash 值 |
| REQUEST_TYPE | bigint(20) | NO | 请求对应的类型： - 0：表示非法 - 1：表示是一个内部请求 - 2：表示是一个本地请求，例如，Local 计划 - 3：表示远程请求 - 4：表示分布式请求 - 5：表示 SQL 的 Prepare 请求 - 6：表示 SQL 的 Execute Stmt 请求 |
| IS_BATCHED_MULTI_STMT | tinyint(4) | NO | 是否进行 Batch Multi Stmt 的优化 |
| OB_TRACE_INFO | varchar(4096) | NO | 用户设置的 Trace 信息 |
| PLAN_HASH | bigint(20) unsigned | NO | 执行计划的 Hash 值 |
| LOCK_FOR_READ_TIME | bigint(20) | NO | 读取数据时等待锁的耗时，单位：微秒 |
| WAIT_TRX_MIGRATE_TIME | bigint(20) | NO | 写入数据时，等待事务因为内部合并机制而需要冻结，冻结过程中未完成的事务需要搬迁出来的耗时，单位：微秒 |
| PARAMS_VALUE | longtext | NO | PS 协议绑定变量的值 |

## 常用的 SQL 介绍

### SQL 的路由信息

OceanBase 数据库的 SQL 计划类型整体分为如下四类：

- Local 计划：指事务 Session 和本语句涉及的分区 Leader 在同一 OBServer。可以涉及多个分区，但不允许同一张表内出现多个分区。
 - Remote 计划：指事务 Session 和本语句涉及的分区 Leader 在两个 OBServer 上。可以涉及多个分区，但不允许同一张表内出现多个分区。
 - Distribute 计划：指当前语句的操作涉及多个分区。分区可以分布在一个或多个 OBServer。
 - Uncertain 计划：指在语句开始执行期间，无法确定分区数目的场景。一般存在于全局索引、外键等场景。

由于单机事务提交的效率比跨机高，用户需要根据实际情况，确认上述计划的比例数是否符合预期。SQL 计划的统计语句如下：

```unknow
select plan_type, count(1) from gv$sql_audit where tenant_id = xxx and request_time > time_to_usec('2021-10-08 12:00:00') group by plan_type;

```

`plan_type` 的取值为 1、2、3、4，分别表示 Local 计划、Remote 计划、Distribute 计划和 Uncertain 计划。

### 慢 SQL 统计

查询一段时间内，耗时超过某个阈值的 SQL，根据查询的结果进行 SQL 计划调优：

```unknow
select tenant_id, elapsed_time, usec_to_time(request_time), substr(query_sql, 1, 50) from gv$sql_audit where tenant_id=1001 and elapsed_time > 100000 and request_time > time_to_usec('2021-10-08 12:00:00') order by elapsed_time desc limit 40;

```

### 事务内涉及的 SQL 统计

`sql_audit` 里的每条 SQL 预期都记录了当前 SQL 所涉及的事务唯一标识：transaction_hash，可以根据该字段找到当前事务内所有的 SQL 信息，进而基于该信息确定业务压测的事务模型是否符合预期：单 SQL 事务、多 SQL 事务等。

```unknow
select tenant_id, substr(query_sql,1,50) from gv$sql_audit where tenant_id=1002 and  transaction_hash='xxx' order by request_time;

```

### 同一个 Session 上执行的 SQL

基于 SID 可以查询出所有的业务请求，主要用来分析业务模型。

```unknow
select tenant_id, substr(query_sql,1,50) from gv$sql_audit where tenant_id=1002 and sid=1001 and request_time > time_to_usec('2021-10-08 12:00:00') order by request_time;

```

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