分散実行計画に関連するクエリの問題を、以下の手順で分析します。
(G)V$OB_PLAN_CACHE_PLAN_STATビューおよび(G)V$OB_SQL_AUDITの実行計画タイプに関するレコードを確認し、分散実行計画であるかどうかを判断します。その実行計画が正しいかどうかを分析します。
trace_idをキーに(G)V$OB_SQL_AUDITの関連レコードを照会し、実行されたすべてのサブプランの所要時間を確認します。各サブプランのRPC実行には1件の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$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 |
+----------------------------------+-----------------+--------------+