首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库性能视图 gv$sql_audit 介绍
更新时间:2024-01-22 01:56
gv$sql_audit 是分析 SQL 执行情况的重要视图,通过该视图中不仅可以分析出慢 SQL(如 elapsed_time、execute_time 等指标),还能挖掘出其他重要内容。
说明
本文以 OceanBase 数据库 V2.2.7x 为例进行说明。该视图在不同版本中可能存在差异,请参见对应版本的《OceanBase 数据库 参考指南》中的 **性能视图** 章节。
适用版本
OceanBase 数据库所有版本。
基本信息字段
gv$sql_audit 中基本信息字段如下。
TRACE_ID:可以根据该信息定位到该 SQL 的 debug 信息。
TENANT_ID:租户 ID。
TRANSACTION_HASH:可以根据该信息找到事务中的 SQL 信息。
PLAN_ID:可以根据
PLAN_ID与IP、PORT与TENANT_ID共同获取当前执行计划的信息查找执行计划。
obclient> SELECT * FROM gv$plan_cache_plan_explain WHERE ip = 'xxxx' AND port = xxxx AND tenant_id=xxx AND plan_id =xxx;
耗时相关信息字段
gv$sql_audit 中与耗时相关信息字段如下。
ELAPSED_TIME:获取 SQL 请求到响应的时间,单位为微秒。
QUEUE_TIME:表示在队列中等待的时间。如果此值过高,表示租户 CPU 不足或者服务器负载过高。
EXECUTE_TIME:表示 CPU 执行时间。
TOTAL_WAIT_TIME_MICRO:sync rpc 表示事件的等待以及等待耗时,贯穿于整个 SQL 执行周期里。
在日志中,默认会打印执行时长超过 100 ms 的 SQL,但实际上有可能打印出小于 100 ms SQL,这是由于打印结果没有计入 queue_time。
SQL 相关特征字段
gv$sql_audit 中与 SQL 相关信息字段如下。
IS_EXECUTOR_RPC:表示非 rpc 调用,rpc 调用的耗时会计算到真正 SQL 执行的耗时中去。
IS_INNER_SQL:0 表示非内部统计 SQL,1 表示内部统计 SQL。
RET_CODE:表示语句错误码。其中,0 表示没有错误,成功执行。
说明
您可以根据显示的错误码,在 OceanBase 数据库的《参考指南》中的 错误码 章节中查找有关该错误码的详细信息。
PLAN_TYPE:表示计划为本地计划还是远程计划。有如下取值:
1 表示本地执行。
2 表示远程调用(调用的分区在一台远程节点上)。
3 表示分布式调用 。
RPC_COUNT:表示 rpc 调用次数。
IS_HIT_PLAN:表示是否命中计划缓存。其中,
1 表示命中计划缓存,对于命中缓存的 SQL,其 GET_PLAN_TIME 应为 0。
0 表示未命中计划缓存。
CLIENT_IP:一般为 OBProxy 的 IP 地址,特别地,对于 rpc 请求可能是其他 OBServer 的 IP 地址。
CLIENT_PORT:表示请求发出的源。2882 表示数据库内部调用 rpc,而非 OBProxy 发送的请求。
REQUEST_TYPE:表示请求对应的类型。有如下取值:
0 表示非法请求。
1 表示内部请求。
2 表示本地请求。
3 表示远程请求。
4 表示分布式请求。
5 表示 SQL prepare 请求。
6 表示 SQL execute stmt 请求。