TRACE は、分散ノード全体で SQL ステートメントを実行し、ノードごとの所要時間、行数、および接続コストを記録します。結果を取得するには、TRACE <SQL> の後に SHOW TRACE を実行します。
ステートメントを実行せずに実行プランを分析するEXPLAINとは異なり、TRACEは SQL を実行し、実際のランタイムメトリクスをキャプチャします。
構文
TRACE <SQL>;
SHOW TRACE;クエリのトレース
以下の例では、SELECT 1 をトレースします。
TRACE ステートメントを実行します。
mysql> TRACE SELECT 1; +---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.03 sec)クエリが実行され、通常どおり結果が返されます。
トレースデータを取得します。
mysql> SHOW TRACE; +------+----------+----------------+-----------------------------------+---------------+--------------------------+------+-----------+--------+ | ID | TYPE | GROUP_NAME | DBKEY_NAME | TIME_COST(MS) | CONNECTION_TIME_COST(MS) | ROWS | STATEMENT | PARAMS | +------+----------+----------------+-----------------------------------+---------------+--------------------------+------+-----------+--------+ | 0 | Optimize | DRDS | DRDS | 3 | 0.00 | 0 | select 1 | NULL | | 1 | Query | TDDL5_00_GROUP | db218249098_sqa_zmf_tddl5_00_3309 | 7 | 0.15 | 1 | select 1 | NULL | +------+----------+----------------+-----------------------------------+---------------+--------------------------+------+-----------+--------+ 2 rows in set (0.01 sec)
SHOW TRACE の出力フィールド
フィールド | 説明 |
| 各トレースエントリの順次識別子。 |
| 処理のフェーズ。 |
| このフェーズが実行されたシャードグループの名前。 |
| グループ内の特定のデータベースインスタンスまたはノードの識別子。 |
| このフェーズに費やされた合計時間 (ミリ秒単位)。 |
| ノードへの接続確立に費やされた時間 (ミリ秒単位)。 |
| このフェーズで処理または返された行数。 |
| このノードに送信された SQL ステートメント。 |
| ステートメントにバインドされたパラメーター値 (存在する場合)。パラメーターがバインドされていない場合は |
次のステップ
クエリを実行せずに実行プランを分析するには、EXPLAIN を使用します。