分散実行計画は、以下の手順でクエリ問題を分析します:
(G)V$OB_PLAN_CACHE_PLAN_STATビューおよび(G)V$OB_SQL_AUDITの実行計画タイプのレコードを確認し、分散実行計画であるかどうかを判断します。当該実行計画が正しいかどうかを分析します。
trace_idを使用してクエリ(G)V$OB_SQL_AUDITと関連付け、実行されたすべてのサブ計画の時間消費状況を確認します。各サブ計画の RPC 実行には1件のSQL Auditレコードが対応しており、このSQL Auditレコードを分析して問題を特定します。
以下の例のように、isExecutorRpc = 1 はサブ計画の実行がSQL Auditに記録されていることを示し、主に実行関連情報を記録します。isExecutorRpc = 0 はSQLリクエストを受信したスレッドのSQL Auditにおける記録を示します。この記録には、SQL情報や実行計画情報の取得など、SQL実行プロセスの情報が含まれます。
obclient> SELECT/*+ PARALLEL(15)*/sql_id, is_executor_rpc, elapsed_time
FROM oceanbase.GV$OB_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 |
+----------------------------------+-----------------+--------------+