MySQL 8.0 リファレンスマニュアル


20.5.7 X プラグイン の監視

X プラグイン の一般的な監視には、公開するステータス変数を使用します。 セクション20.5.6.3「X プラグイン ステータス変数」を参照してください。 メッセージ圧縮の影響の監視の詳細は、X プラグイン の接続圧縮の監視 を参照してください。

X プラグイン によって生成された SQL の監視

このセクションでは、X DevAPI 操作の実行時に X プラグイン によって生成される SQL ステートメントを監視する方法について説明します。 CRUD ステートメントを実行すると、SQL に変換され、サーバーに対して実行されます。 生成された SQL を監視できるようにするには、「パフォーマンススキーマ」テーブルを有効にする必要があります。 SQL は、performance_schema.events_statements_currentperformance_schema.events_statements_history および performance_schema.events_statements_history_long の各テーブルに登録されます。 次の例では、このセクションのクイックスタートチュートリアルの一部としてインポートされた world_x スキーマを使用します。 Python モードで MySQL Shell を使用し、SQL モードに変更せずに SQL ステートメントを発行できる\sql コマンドを使用します。 かわりに SQL モードに切り替えると、X DevAPI 操作ではなくこの操作の結果がプロシージャに表示されるため、これは重要です。 JavaScript モードで MySQL Shell を使用している場合、\sql コマンドは同じ方法で使用されます。

  1. events_statements_history コンシューマが有効かどうかを確認します。 次のコマンドを発行します:

    mysql-py> \sql SELECT enabled FROM performance_schema.setup_consumers WHERE NAME = 'events_statements_history'
    +---------+
    | enabled |
    +---------+
    | YES     |
    +---------+
  2. すべてのインストゥルメントがコンシューマにデータをレポートするかどうかを確認します。 次のコマンドを発行します:

    mysql-py> \sql SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments WHERE NAME LIKE 'statement/%' AND NOT (ENABLED and TIMED)

    このステートメントが少なくとも 1 つの行を報告する場合は、インストゥルメントを有効にする必要があります。 セクション27.4「パフォーマンススキーマ実行時構成」を参照してください。

  3. 現在の接続のスレッド ID を取得します。 次のコマンドを発行します:

    mysql-py> \sql SELECT thread_id INTO @id FROM performance_schema.threads WHERE processlist_id=connection_id()
  4. 生成された SQL を表示する X DevAPI CRUD 操作を実行します。 たとえば、次のように発行します:

    mysql-py> db.CountryInfo.find("Name = :country").bind("country", "Italy")

    正しい結果を表示するために、次のステップでこれ以上の操作を発行しないでください。

  5. このスレッド ID によって行われた最後の SQL クエリーを表示します。 次のコマンドを発行します:

    mysql-py> \sql SELECT THREAD_ID, MYSQL_ERRNO,SQL_TEXT FROM performance_schema.events_statements_history WHERE THREAD_ID=@id ORDER BY TIMER_START DESC LIMIT 1;
    +-----------+-------------+--------------------------------------------------------------------------------------+
    | THREAD_ID | MYSQL_ERRNO | SQL_TEXT                                                                             |
    +-----------+-------------+--------------------------------------------------------------------------------------+
    |        29 |           0 | SELECT doc FROM `world_x`.`CountryInfo` WHERE (JSON_EXTRACT(doc,'$.Name') = 'Italy') |
    +-----------+-------------+--------------------------------------------------------------------------------------+

    結果には、最新のステートメント (この場合は前のステップの X DevAPI CRUD 操作) に基づいて X プラグイン によって生成された SQL が表示されます。


関連キーワード:  テーブル, 監視, ドキュメント, リファレンス, 操作, Shell, performance, 発行, ステートメント, コレクション