X プラグイン の一般的な監視には、公開するステータス変数を使用します。 セクション20.5.6.3「X プラグイン ステータス変数」を参照してください。 メッセージ圧縮の影響の監視の詳細は、X プラグイン の接続圧縮の監視 を参照してください。
このセクションでは、X DevAPI 操作の実行時に X プラグイン によって生成される SQL ステートメントを監視する方法について説明します。 CRUD ステートメントを実行すると、SQL に変換され、サーバーに対して実行されます。 生成された SQL を監視できるようにするには、「パフォーマンススキーマ」テーブルを有効にする必要があります。 SQL は、performance_schema.events_statements_current
、performance_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
コマンドは同じ方法で使用されます。
-
events_statements_history
コンシューマが有効かどうかを確認します。 次のコマンドを発行します:mysql-py> \sql SELECT enabled FROM performance_schema.setup_consumers WHERE NAME = 'events_statements_history' +---------+ | enabled | +---------+ | YES | +---------+
-
すべてのインストゥルメントがコンシューマにデータをレポートするかどうかを確認します。 次のコマンドを発行します:
mysql-py> \sql SELECT NAME, ENABLED, TIMED FROM performance_schema.setup_instruments WHERE NAME LIKE 'statement/%' AND NOT (ENABLED and TIMED)
このステートメントが少なくとも 1 つの行を報告する場合は、インストゥルメントを有効にする必要があります。 セクション27.4「パフォーマンススキーマ実行時構成」を参照してください。
-
現在の接続のスレッド ID を取得します。 次のコマンドを発行します:
mysql-py> \sql SELECT thread_id INTO @id FROM performance_schema.threads WHERE processlist_id=connection_id()
-
生成された SQL を表示する X DevAPI CRUD 操作を実行します。 たとえば、次のように発行します:
mysql-py> db.CountryInfo.find("Name = :country").bind("country", "Italy")
正しい結果を表示するために、次のステップでこれ以上の操作を発行しないでください。
-
このスレッド 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 が表示されます。