OceanBaseデータベースは、Trace機能に基づいて前回のSQLリクエストの完全なログを迅速に取得できるようサポートしています。
ターゲットのSQLリクエストログを容易に検索できるようにするため、事前にログ出力レベルを設定して、SQLモジュール以外のログの出力を削減できます。ログ出力レベルの関連設定については、ログ出力レベルの設定を参照してください。
具体的な手順は以下のとおりです:
Trace機能を有効にします。
Trace機能を有効にするには、次の2つの方法があります:
Session変数
ob_enable_show_traceを設定してTrace機能を有効にします。この方法は、このSessionの後続のすべてのステートメントに適用されます。obclient [test]> SET ob_enable_show_trace=ON;Hintの
trace_logフィールドを設定してTrace機能を有効にします。この方法は、Hintを含む現在のステートメントにのみ適用されます。その他のHintステートメントの詳細については、Optimizer Hintを参照してください。obclient [test]> SELECT /*+trace_log=on*/c1 FROM t1 LIMIT 2;
SHOW TRACE使用してSQLの実行情報を確認します。Trace機能を有効にしてSQLリクエストを実行した後、
SHOW TRACEステートメントを使用して、前回のSQLステートメントの詳細な実行追跡情報を取得できます。obclient [test]> SHOW TRACE; +-------------------------------------------+----------------------------+------------+ | Operation | StartTime | ElapseTime | +-------------------------------------------+----------------------------+------------+ | com_query_process | 2023-03-22 14:30:27.552259 | 0.405 ms | | └── mpquery_single_stmt | 2023-03-22 14:30:27.552266 | 0.386 ms | | ├── sql_compile | 2023-03-22 14:30:27.552283 | 0.083 ms | | │ └── pc_get_plan | 2023-03-22 14:30:27.552286 | 0.025 ms | | └── sql_execute | 2023-03-22 14:30:27.552379 | 0.242 ms | | ├── open | 2023-03-22 14:30:27.552380 | 0.024 ms | | ├── response_result | 2023-03-22 14:30:27.552417 | 0.140 ms | | │ ├── get_das_id | 2023-03-22 14:30:27.552421 | 0.000 ms | | │ └── do_local_das_task | 2023-03-22 14:30:27.552435 | 0.049 ms | | └── close | 2023-03-22 14:30:27.552570 | 0.039 ms | | ├── close_das_task | 2023-03-22 14:30:27.552571 | 0.012 ms | | └── end_transaction | 2023-03-22 14:30:27.552596 | 0.003 ms | +-------------------------------------------+----------------------------+------------+ 12 rows in set (0.006 sec)ElapseTimeフィールドは、このステップで費やした時間をミリ秒単位で示します。例えば、pc_get_planのElapseTimeフィールドが0.025 msと表示されている場合、OceanBaseデータベースがPlan Cacheから実行計画を取得するのに0.025 msかかったことを意味します。 主要な関連Operationの紹介は以下のとおりです。その他のOperationタイプについては、全リンクトレースプロセスのspanを参照してください。com_query_process:クエリ処理。
mpquery_single_stmt:単一ステートメントのアクセスパス。
sql_compile:SQLのコンパイル。
pc_get_plan:実行計画の取得。
hard_parse:ハードパース。
parse:ソフトパース。
resolve:構文ツリーのセマンティクスを解析し、ステートメントを生成します。
rewrite:SQLの書き換え。
optimize:コストに基づく最適化を行い、実行計画ログを生成します。
code_generate:実行計画ログに基づいて物理実行計画を生成します。
pc_add_plan:生成された実行計画をplan cacheに追加します。
sql_execute:物理実行計画を実行します。
open:実行計画を開きます。
response_result:実行計画のプロセスと結果。
get_das_id:dasタスクIDを取得します。
do_local_das_task:ローカルdasタスクを実行します。
px_schedule:pxに基づいてタスクをスケジューリングします。
px_task:pxサブタスクを実行します。
close:実行計画を閉じます。
close_das_task:dasタスクを閉じます。
end_transaction:トランザクションを終了します。
cmd_execute:コマンドを実行します。
cmd_open:cmd計画を開始します。
ps_prepare:preprocess statementのプリペア。
ps_execute:preprocess statementの実行。
ps_close:preprocess statementを閉じます。
pl_entry:ストアドプロシージャ処理。
pl_compile:ストアドプロシージャオブジェクトのコンパイル。
pc_get_pl_object:plan cacheからストアドプロシージャオブジェクトを取得します。
pc_add_pl_object:ストアドプロシージャオブジェクトをplan cacheに保存します。
pl_execute:ストアドプロシージャを実行します。
pl_spi_query:ストアドプロシージャ内のspiステートメントを実行します。
pl_spi_prepare:ストアドプロシージャのプリペア段階。
pl_spi_execute:ストアドプロシージャ内のspiステートメントを実行します。
inner_prepare:内部SQLのプリペア段階。
inner_execute:内部SQLの実行段階。
inner_execute_read:内部SQLの読み取り。
inner_execute_write:内部SQLの書き込み。
inner_commit:内部SQLトランザクションのコミット。
inner_rollback:内部SQLトランザクションのロールバック。
trace_id使用して、ログファイル内の前回のSQLリクエストの完全なログを検索します。OceanBaseデータベースのログ出力には常に
trace_idが含まれており、ログファイル(observer.log、election.log、rootservice.log)内で対応するtrace_idを検索することで、前回のSQLリクエストの完全なログを取得できます。last_trace_id()使用してtrace_idを取得します。obclient [test]> SELECT last_trace_id() FROM DUAL; +-----------------------------------+ | last_trace_id() | +-----------------------------------+ | YB42AC1E87CC-0005F6BFDB3E2199-0-0 | +-----------------------------------+ 1 row in set (0.000 sec)対応するOBServerノードにログインし、ログファイルがあるディレクトリに移動します。
cd /home/admin/oceanbase/logtrace_idに対応するログを取得し、grep $trace_id observer.logコマンドを実行します。例えば、trace_idがYB42AC1E87CC-0005F6BFDB3E2199-0-0のログを取得します。grep YB42AC1E87CC-0005F6BFDB3E2199-0-0 observer.log [2023-03-22 14:30:33.124342] [38419][T1_L0_G0][T1][YB42AC1E87CC-0005F6BFDB3E2199-0-0] {"trace_id":"0005f777-4c14-595f-508c-6681b3dac7c9","name":"pc_get_plan","id":"0005f777-4c14-59f1-5c54-a90e3ff82e85","start_ts":1679466633124337,"end_ts":1679466633124340,"parent_id":"0005f777-4c14-59ef-de27-961b48ecfdfd","is_follow":false}