SQL Auditは、待機イベントに関する以下の情報を記録します:
4種類の待機イベントごとの消費時間(
APPLICATION_WAIT_TIME、CONCURRENCY_WAIT_TIME、USER_IO_WAIT_TIME、SCHEDULE_TIME)を記録しており、各待機イベントには多くの具体的な待機時間が含まれます。消費時間が最も長い待機イベント名(
EVENT)とその待機イベントの消費時間(WAIT_TIME_MICRO)を記録しています。すべての待機イベントの発生回数(
TOTAL_WAITS)とすべての待機イベントの合計消費時間(TOTAL_WAIT_TIME_MICRO)を記録しています。
一般的に、待機イベントの合計消費時間が多い場合、消費時間が最も長い待機イベント名(EVENT)を確認することで、遅延の原因を基本的に特定できます。
以下の例のように、待機イベントの主な消費時間がIO待機に集中していることが分析できます。
obclient> SELECT
SQL_ID,
ELAPSED_TIME,
QUEUE_TIME,
GET_PLAN_TIME,
EXECUTE_TIME,
APPLICATION_WAIT_TIME,
CONCURRENCY_WAIT_TIME,
USER_IO_WAIT_TIME,
SCHEDULE_TIME,
EVENT,
WAIT_CLASS,
WAIT_TIME_MICRO,
TOTAL_WAIT_TIME_MICRO
FROM oceanbase.V$OB_SQL_AUDIT
WHERE TRACE_ID = 'YB42AC1E87E6-0005B8AB2D578471'\G;
実行結果は次のとおりです:
************************** 1. row ***************************
SQL_ID: YB42AC1E87E6-0005B8AB2D578471
ELAPSED_TIME: 953
QUEUE_TIME: 18
GET_PLAN_TIME: 58
EXECUTE_TIME: 867
APPLICATION_WAIT_TIME: 0
CONCURRENCY_WAIT_TIME: 0
USER_IO_WAIT_TIME: 550
SCHEDULE_TIME: 0
EVENT: db file data index read
WAIT_CLASS: USER_IO
WAIT_TIME_MICRO: 352
TOTAL_WAIT_TIME_MICRO: 550