機能
すべての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文
説明このフィールドはV4.3.5 BP4バージョン以降、SYSテナントからのみ参照可能です。 |
| 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 | 待機イベントが属するクラス名 |
| 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 | キューから出た後のデコード時間、単位:マイクロ秒 |
| GET_PLAN_TIME | bigint(20) | NO | プロセス開始から計画取得までの時間、単位:マイクロ秒 |
| 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 MultiStmtの最適化を行うかどうか |
| 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 | NO | すべてのNetwork系イベントの合計時間。単位はマイクロ秒。
説明
|
| TOTAL_MEMSTORE_READ_ROW_COUNT | bigint(20) | NO | 全作業プロセスにおけるMEMSTOREからの読み出し総行数(query_textを表示するスレッドでのみこの変数が表示されます)
説明
|
| TOTAL_SSSTORE_READ_ROW_COUNT | bigint(20) | NO | 全作業プロセスにおけるSSSTOREからの読み出し総行数(query_textを表示するスレッドでのみこの変数が表示されます)
説明
|
| PROXY_USER | varchar(128) | YES |
説明
|
| SEQ_NUM | bigint(20) | NUMBER(38) | トランザクション内のステートメント番号。
説明このフィールドはV4.3.5バージョンから導入され、デフォルト値はNULLです。 |
| USER_CLIENT_PORT | bigint(20) | NO | クライアントのポート番号を表示するために使用されます。
説明このフィールドはV4.3.5 BP4バージョンから導入され、デフォルト値はNULLです。 |
| TRANS_STATUS | varchar(256) | NO | トランザクションの開始、暗黙的なトランザクションの開始、またはトランザクションの開始なしを示すために使用されます。
説明このフィールドはV4.3.5 BP4バージョンから導入され、デフォルト値はNULLです。 |
| PLSQL_COMPILE_TIME | bigint(20) | NO | PLコンパイルにかかった時間。
説明
|
| INSERT_DUPLICATE_ROW_COUNT | bigint(20) | YES | insertupまたはreplace into時の重複行数を記録します。
説明 |
よく使われるSQLの紹介
SQLのルーティング情報
OceanBaseデータベースのSQL計画タイプは、全体として以下の4つに分類されます:
Local計画:トランザクションセッションと、このステートメントに関連するパーティションリーダーが同一のOBServer上にある場合を指します。複数のパーティションに関与できますが、同一テーブル内に複数のパーティションが存在することは許可されません。
Remote計画:トランザクションセッションと、このステートメントに関連するパーティションリーダーが2台の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;