codecamp

OceanBase 分析分布式计划相关的查询问题

分布式计划根据以下步骤分析查询问题:

  1. 通过查看 (g)v$plan_cache_plan_stat 视图、(g)v$sql_audit 中对执行计划类型的记录,确定是否为分布式计划。

  2. 分析该执行计划是否正确。

  3. 通过 trace_id 关联查询 gv$sql_audit,查看所有执行的子计划耗时情况,每个子计划的 RPC 执行均对应一条 sql_audit 记录,分析该 sql_audit 记录来定位问题。

如下例所示,is_executor_rpc = 1 表示子计划执行在 sql_audit 中记录,主要记录执行相关的信息。is_executor_rpc = 0 表示接受 SQL 请求的线程在 sql_audit 中的记录。该记录含有 SQL 执行过程的信息,包括 SQL 信息、获取执行计划信息等。

obclient>SELECT/*+ PARALLEL(15)*/sql_id, is_executor_rpc, elapsed_time 
           FROM oceanbase.gv$sql_audit WHERE trace_id = 'YB420AB74FC6-00056349D323483A';

+----------------------------------+-----------------+--------------+
| sql_id                           | is_executor_rpc | elapsed_time |
+----------------------------------+-----------------+--------------+
|                                  |               1 |          124 |
|                                  |               1 |          191 |
|                                  |               1 |       123447 |
|                                  |               1 |          125 |
| 20172B18BC9EE3F806D4149895754CE0 |               0 |       125192 |
|                                  |               1 |          148 |
|                                  |               1 |          149 |
|                                  |               1 |          140 |
+----------------------------------+-----------------+--------------+
OceanBase 查找某个租户中执行全表扫描的 SQL
OceanBase 查看分布式子计划 RPC 执行数是否均衡
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }