機能
すべての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;