機能
すべてのOBServer上での各SQLリクエストの送信元、実行状態などの統計情報を表示します。このビューはテナントごとに分割されており、システムテナントを除く他のテナントではテナント間でのクエリはできません。
フィールド説明
フィールド名 |
型 |
NULL許容 |
説明 |
|---|---|---|---|
| SVR_IP | varchar(46) | NO | IPアドレス |
| SVR_PORT | bigint(20) | NO | ポート番号 |
| REQUEST_ID | bigint(20) | NO | リクエストID |
| SQL_EXEC_ID | bigint(20) | NO | スタンドアロン単調増加の実行ID |
| TRACE_ID | varchar(128) | NO | このステートメントのtrace_id |
| SID | bigint(20) unsigned | NO | セッション接続ID |
| CLIENT_IP | varchar(46) | NO | |
| CLIENT_PORT | bigint(20) | NO | リクエストを送信したクライアントのポート番号 |
| TENANT_ID | bigint(20) | NO | リクエストを送信したテナントID |
| TENANT_NAME | varchar(64) | NO | リクエストを送信したテナント名 |
| EFFECTIVE_TENANT_ID | bigint(20) | NO | テナントID |
| USER_ID | bigint(20) | NO | リクエストを送信したユーザーID |
| USER_NAME | varchar(64) | NO | リクエストを送信したユーザー名 |
| USER_GROUP | bigint(20) | YES | ユーザーが属するリソースグループID |
| USER_CLIENT_IP | varchar(46) | NO | リクエストを送信したクライアントのIP |
| DB_ID | bigint(20) unsigned | NO | データベースID |
| DB_NAME | varchar(128) | NO | データベース名 |
| SQL_ID | varchar(32) | NO | このSQLのID |
| QUERY_SQL | longtext | NO | 実際のSQLステートメント |
| PLAN_ID | bigint(20) | NO | 実行計画のID |
| AFFECTED_ROWS | bigint(20) | NO | 影響行数 |
| RETURN_ROWS | bigint(20) | NO | 戻り行数 |
| PARTITION_CNT | bigint(20) | NO | このリクエストに関連するパーティション数 |
| RET_CODE | bigint(20) | NO | 実行結果の戻りコード: |
| QC_ID | bigint(20) unsigned | NO | パラレル実行シナリオにおけるスケジューラーID |
| DFO_ID | bigint(20) | NO | パラレル実行シナリオにおける現在実行中のサブプランID |
| SQC_ID | bigint(20) | NO | パラレル実行シナリオにおけるローカルコーディネーターID |
| WORKER_ID | bigint(20) | NO | パラレル実行シナリオにおけるワーカースレッドID |
| EVENT | varchar(64) | NO | 最長待機イベント名 |
| P1TEXT | varchar(64) | NO | 待機イベントパラメータ1 |
| P1 | bigint(20) unsigned | NO | 待機イベントパラメータ1の値 |
| P2TEXT | varchar(64) | NO | 待機イベントパラメータ2 |
| P2 | bigint(20) unsigned | NO | 待機イベントパラメータ2の値 |
| P3TEXT | varchar(64) | NO | 待機イベントパラメータ3 |
| P3 | bigint(20) unsigned | NO | 待機イベントパラメータ3の値 |
| LEVEL | bigint(20) | NO | 待機イベントのレベル |
| WAIT_CLASS_ID | bigint(20) | NO | 待機イベントが属するClass ID |
| WAIT_CLASS# | bigint(20) | NO | 待機イベントが属するClassのインデックス |
| WAIT_CLASS | varchar(64) | NO | 待機イベントが属するClass名 |
| STATE | varchar(19) | NO | イベントの状態 |
| WAIT_TIME_MICRO | bigint(20) | NO | 待機イベントの待機時間、単位:マイクロ秒 |
| TOTAL_WAIT_TIME_MICRO | bigint(20) | NO | 実行プロセス全体の待機総時間、単位:マイクロ秒 |
| TOTAL_WAITS | bigint(20) | NO | 実行プロセスの総待機回数 |
| RPC_COUNT | bigint(20) | NO | 送信されたRPCの数 |
| PLAN_TYPE | bigint(20) | NO | 実行計画タイプ: |
| IS_INNER_SQL | tinyint(4) | NO | 内部SQLリクエストかどうか |
| IS_EXECUTOR_RPC | tinyint(4) | NO | 現在のリクエストがRPCリクエストかどうか |
| IS_HIT_PLAN | tinyint(4) | NO | plan_cacheにヒットしたかどうか |
| REQUEST_TIME | bigint(20) | NO | 実行開始時刻、単位:マイクロ秒 |
| ELAPSED_TIME | bigint(20) | NO | リクエスト受信から実行終了までの総時間、単位:マイクロ秒 |
| NET_TIME | bigint(20) | NO | RPC送信からリクエスト受信までの時間、単位:マイクロ秒 |
| NET_WAIT_TIME | bigint(20) | NO | リクエスト受信からキューイングまでの時間、単位:マイクロ秒 |
| QUEUE_TIME | bigint(20) | NO | リクエストのキュー待ち時間、単位:マイクロ秒 |
| DECODE_TIME | bigint(20) | NO | キューを離れてからDecodeするまでの時間、単位:マイクロ秒 |
| GET_PLAN_TIME | bigint(20) | NO | Process開始から計画取得までの時間、単位:マイクロ秒 |
| EXECUTE_TIME | bigint(20) | NO | 計画実行に要した時間、単位:マイクロ秒 |
| APPLICATION_WAIT_TIME | bigint(20) unsigned | NO | すべてのApplication系イベントの合計時間、単位:マイクロ秒 |
| CONCURRENCY_WAIT_TIME | bigint(20) unsigned | NO | すべてのConcurrency系イベントの合計時間、単位:マイクロ秒 |
| USER_IO_WAIT_TIME | bigint(20) unsigned | NO | 全user_ioイベントの合計時間、単位:マイクロ秒 |
| SCHEDULE_TIME | bigint(20) unsigned | NO | 全Scheduleイベントの時間、単位:マイクロ秒 |
| ROW_CACHE_hit | bigint(20) | NO | 行キャッシュヒット数 |
| BLOOM_FILTER_CACHE_HIT | bigint(20) | NO | Bloom Filterキャッシュヒット数 |
| BLOCK_CACHE_HIT | bigint(20) | NO | ブロックキャッシュヒット数 |
| DISK_READS | bigint(20) | NO | 物理読み取り回数 |
| RETRY_CNT | bigint(20) | NO | 再試行回数 |
| TABLE_SCAN | tinyint(4) | NO | このリクエストにフルテーブルスキャンが含まれているかどうかを判断するために使用されます |
| CONSISTENCY_LEVEL | bigint(20) | NO | 一貫性レベル。値は以下のとおりです:
|
| MEMSTORE_READ_ROW_COUNT | bigint(20) | NO | MemStore内の読み取り行数 |
| SSSTORE_READ_ROW_COUNT | bigint(20) | NO | SSStore内の連続読み取り行数 |
| DATA_BLOCK_READ_CNT | bigint(20) | NO | アクセスしたデータのマイクロブロック数 |
| DATA_BLOCK_CACHE_HIT | bigint(20) | NO | データマイクロブロックCacheヒット数 |
| INDEX_BLOCK_READ_CNT | bigint(20) | NO | アクセスした中間層マイクロブロック数 |
| INDEX_BLOCK_CACHE_HIT | bigint(20) | NO | 中間層マイクロブロックCacheヒット数 |
| BLOCKSCAN_BLOCK_CNT | bigint(20) | NO | 単一方向スキャンのデータマイクロブロック数 |
| BLOCKSCAN_ROW_CNT | bigint(20) | NO | 単一方向スキャンのデータ行数 |
| PUSHDOWN_STORAGE_FILTER_ROW_CNT | bigint(20) | NO | ストレージFilterプッシュダウン後の行数 |
| REQUEST_MEMORY_USED | bigint(20) | NO | このリクエストで消費されたメモリ |
| EXPECTED_WORKER_COUNT | bigint(20) | NO | リクエストが期待するワーカースレッド数 |
| USED_WORKER_COUNT | bigint(20) | NO | リクエストで実際に使用されたワーカースレッド数 |
| SCHED_INFO | varchar(16384) | YES | リクエストのスケジューリング情報 |
| FUSE_ROW_CACHE_HIT | bigint(20) | NO | このフィールドは現在サポートされていません。デフォルトはNULLです。 |
| PS_CLIENT_STMT_ID | bigint(20) | NO | リクエストに対応するPrepare ID:
|
| PS_INNER_STMT_ID | bigint(20) | NO | リクエストに対応するPrepare ID:
|
| TX_ID | bigint(20) | NO | リクエストに対応するトランザクションのHash値 |
| SNAPSHOT_VERSION | bigint(20)unsigned | NO | 現在のステートメントのスナップショット読み取りバージョン番号 |
| REQUEST_TYPE | bigint(20) | NO | リクエストに対応するタイプ: |
| IS_BATCHED_MULTI_STMT | tinyint(4) | NO | Batch Multi Stmtの最適化が実行されているかどうか |
| OB_TRACE_INFO | varchar(4096) | NO | ユーザー設定のTrace情報 |
| PLAN_HASH | bigint(20) unsigned | NO | 実行計画のHash値 |
| LOCK_FOR_READ_TIME | bigint(20) | NO | データ読み取り時のロック待ち時間。単位:マイクロ秒 |
| PARAMS_VALUE | longtext | NO | PS実行時のパラメータ値 |
| RULE_NAME | varchar(256) | NO | ルール名 |
| PARTITION_HIT | tinyint(4) | NO |
|
| TX_INTERNAL_ROUTING | bigint(20) | NO | SQLステートメントが内部ルーティングを経由したかどうかを示します。
|
| TX_STATE_VERSION | bigint(20) unsigned | NO | SQLステートメントのトランザクション状態バージョンを表します |
| FLT_TRACE_ID | varchar(1024) | NO | このレコードのエンドツーエンド・トレースのtrace_idを表します。空の場合、エンドツーエンド・トレースによる監視を受けていないことを意味します。このフィールドはUuidであり、Traceとは異なります。その表記形式は次のようになります:000600d6-a5de-038c-6c80-df07e4e79149
説明
|
| PL_TRACE_ID | varchar(128) | NO | 現在のSQLステートメントの外部PLのTrace IDです(外部PLがない場合、この値はNULLです)。
説明
|
| PLSQL_EXEC_TIME | bigint(20) | NO | PL実行にかかった時間(SQL実行時間を除く)、単位:マイクロ秒
説明
|
| FORMAT_SQL_ID | varchar(32) | NO | このレコードがFormat SQL textによって生成されたMD5値を表します。 |
| STMT_TYPE | varchar(128) | YES | DMLタイプは必要に応じて返されます:
|
| NETWORK_WAIT_TIME | bigint(20) unsigned | YES | すべてのNetworkタイプイベントの合計時間、単位はマイクロ秒です。 |
| TOTAL_MEMSTORE_READ_ROW_COUNT | bigint(20) | NO | メモリストアから読み取られた行数の合計(query_textを表示するスレッドでのみこの変数が表示されます)
説明
|
| TOTAL_SSSTORE_READ_ROW_COUNT | bigint(20) | NO | 作業全体でSSSTOREから読み取った行数の合計(query_textを表示するスレッドでのみこの変数が表示されます)
説明
|
| PROXY_USER | varchar(128) | YES |
説明
|
| PLSQL_COMPILE_TIME | bigint(20) | NO | PLコンパイルにかかった時間。
説明
|
| INSERT_DUPLICATE_ROW_COUNT | bigint(20) | YES | insertupまたはreplace into時の重複行数を記録します。
説明 |
| USER_CLIENT_PORT | bigint(20) | NO | クライアントポート番号を表示するために使用されます。
説明
|
| TRANS_STATUS | varchar(256) | NO | トランザクションの明示的/暗黙的開始、または開始なしを示すために使用されます。
説明 |
| TX_TABLE_READ_CNT | bigint(20) | YES | トランザクション状態テーブルを読み取るクエリ回数。
説明V4.4.2バージョンでは、このフィールドはV4.4.2 BP1バージョンから導入されました。 |
| OUTROW_LOB_CNT | bigint(20) | YES | クエリ実行中に読み取ったoutrow lob列の数。
説明V4.4.2バージョンでは、このフィールドはV4.4.2 BP1バージョンから導入されました。 |
| COMMIT_TIME | bigint(20) | NO | トランザクション内でコミットをトリガーしたSQLがコミットにかかった時間を記録します。SQLがコミットをトリガーしなかった場合、デフォルト値は0です。
説明V4.4.2バージョンでは、このフィールドはV4.4.2 BP1バージョンから導入されました。 |
重要なイベント間の時間差関係
このビューにおける重要なイベントに対応するフィールド ELAPSED_TIME、REQUEST_TIME、NET_WAIT_TIME、QUEUE_TIME、DECODE_TIME、GET_PLAN_TIME、EXECUTE_TIME および COMMIT_TIME の関係は、次の図のとおりです。

よく使われるSQLの紹介
SQLのルーティング情報
OceanBaseデータベースのSQL実行計画タイプは、全体として以下の4つに分類されます:
Local計画:トランザクションセッションと、そのステートメントで扱われるパーティションのリーダーが同じOBServer上にある場合を指します。複数のパーティションを対象にすることはできますが、同一テーブル内に複数のパーティションが存在することは許可されません。
Remote計画:トランザクションセッションと、そのステートメントで扱われるパーティションのリーダーが異なるOBServer上にある場合を指します。複数のパーティションを対象にすることはできますが、同一テーブル内に複数のパーティションが存在することは許可されません。
Distribute計画:現在のステートメントの操作が複数のパーティションにまたがる場合を指します。パーティションは1つまたは複数のOBServerに分散している可能性があります。
Uncertain計画:ステートメントの実行開始時点で、パーティション数が特定できないシナリオを指します。一般的にグローバルインデックスや外部キーなどのシナリオで発生します。
単一マシントランザクションのコミット効率はマシン間よりも高いため、ユーザーは実際の状況に応じて、上記の計画の割合が想定通りであるか確認する必要があります。SQL計画の統計サンプルステートメントは以下のとおりです:
select plan_type, count(1) from GV$OB_SQL_AUDIT where tenant_id = *** and request_time > time_to_usec('2021-10-08 12:00:00') group by plan_type;
plan_type の値は1、2、3、4であり、それぞれLocal計画、Remote計画、Distribute計画、Uncertain計画を表します。
スローSQL統計
一定期間において、実行時間が特定のしきい値を超えたSQLを照会し、クエリ結果に基づいてSQL計画の最適化を行います:
select tenant_id, elapsed_time, usec_to_time(request_time), substr(query_sql, 1, 50) from GV$OB_SQL_AUDIT where tenant_id=1001 and elapsed_time > 100000 and request_time > time_to_usec('2021-10-08 12:00:00') order by elapsed_time desc limit 40;
トランザクション内で扱われるSQLの統計
sql_audit 内の各SQL予想は、現在のSQLが関連するトランザクションの一意の識別子である transaction_hash を記録しています。このフィールドに基づいて、現在のトランザクション内のすべてのSQL情報を見つけることができ、それに基づいて業務負荷テストのトランザクションモデルが想定通りであるかを判断できます:単一SQLトランザクション、複数SQLトランザクションなど。
select tenant_id, substr(query_sql,1,50) from GV$OB_SQL_AUDIT where tenant_id=1002 and TX_ID='***' order by request_time;
同一セッション上で実行されるSQL
SIDに基づいてすべての業務リクエストを照会することができ、主に業務モデルの分析に使用されます。
select tenant_id, substr(query_sql,1,50) from GV$OB_SQL_AUDIT where tenant_id=1002 and sid=1001 and request_time > time_to_usec('2021-10-08 12:00:00') order by request_time;