目次
- 27.1 パフォーマンススキーマクイックスタート
- 27.2 パフォーマンススキーマビルド構成
- 27.3 パフォーマンススキーマ起動構成
- 27.4 パフォーマンススキーマ実行時構成
- 27.5 パフォーマンススキーマクエリー
- 27.6 パフォーマンススキーマインストゥルメント命名規則
- 27.7 パフォーマンススキーマステータスモニタリング
- 27.8 パフォーマンススキーマの原子的および分子的イベント
- 27.9 現在および過去のイベントのパフォーマンススキーマテーブル
- 27.10 パフォーマンススキーマのステートメントダイジェストとサンプリング
- 27.11 パフォーマンススキーマの一般的なテーブル特性
- 27.12 パフォーマンススキーマテーブルの説明
- 27.12.1 パフォーマンススキーマテーブルインデックス
- 27.12.2 パフォーマンススキーマセットアップテーブル
- 27.12.3 パフォーマンススキーマインスタンステーブル
- 27.12.4 パフォーマンススキーマ待機イベントテーブル
- 27.12.5 パフォーマンススキーマステージイベントテーブル
- 27.12.6 パフォーマンススキーマステートメントイベントテーブル
- 27.12.7 パフォーマンススキーマのトランザクションテーブル
- 27.12.8 パフォーマンススキーマ接続テーブル
- 27.12.9 パフォーマンススキーマ接続属性テーブル
- 27.12.10 パフォーマンススキーマのユーザー定義変数テーブル
- 27.12.11 パフォーマンススキーマレプリケーションテーブル
- 27.12.12 パフォーマンススキーマ NDB Cluster テーブル
- 27.12.13 パフォーマンススキーマロックテーブル
- 27.12.14 パフォーマンススキーマシステム変数テーブル
- 27.12.15 パフォーマンススキーマのステータス変数のテーブル
- 27.12.16 パフォーマンススキーマスレッドプールテーブル
- 27.12.17 パフォーマンススキーマクローンテーブル
- 27.12.18 パフォーマンススキーマサマリーテーブル
- 27.12.19 パフォーマンススキーマのその他のテーブル
- 27.13 パフォーマンススキーマオプションおよび変数リファレンス
- 27.14 パフォーマンススキーマコマンドオプション
- 27.15 パフォーマンススキーマシステム変数
- 27.16 パフォーマンススキーマステータス変数
- 27.17 パフォーマンススキーマのメモリー割り当てモデル
- 27.18 パフォーマンススキーマとプラグイン
- 27.19 問題を診断するためのパフォーマンススキーマの使用
- 27.20 パフォーマンススキーマの制約
MySQL パフォーマンススキーマは低レベルで MySQL サーバーの実行をモニタリングするための機能です。 パフォーマンススキーマには、これらの特性があります。
パフォーマンススキーマは、実行時にサーバーの内部実行を検査する方法を提供します。 それは、
PERFORMANCE_SCHEMA
ストレージエンジンおよびperformance_schema
データベースを使用して実装されます。 パフォーマンススキーマは、主にパフォーマンスデータに焦点を合わせています。 これは、メタデータの検査に使用されるINFORMATION_SCHEMA
と異なります。パフォーマンススキーマはサーバーイベントをモニターします。 「イベント」は、時間がかかり、タイミング情報を収集できるようにインストゥルメントされた、サーバーが実行するすべてのことです。 一般に、イベントは、関数呼び出し、オペレーティングシステムの待機、解析やソートなどの SQL ステートメント実行のステージ、またはステートメント全体やステートメントのグループなどになります。 イベント収集を使用すると、サーバーやいくつかのストレージエンジンの同期呼び出し (相互排他ロックなど) ファイルやテーブルの I/O,テーブルロックに関する情報にアクセスできます。
パフォーマンススキーマイベントは、サーバーのバイナリログに書き込まれるイベント (これはデータの変更を説明する) やイベントスケジューラのイベント (これはストアドプログラムの一種である) とは区別されます。
パフォーマンススキーマイベントは MySQL サーバーの特定のインスタンスに固有です。 「パフォーマンススキーマ」テーブルはサーバーに対してローカルであるとみなされ、それらに対する変更はバイナリログにレプリケートまたは書き込まれません。
現在のイベントに加えて、イベントの履歴とサマリーを取得できます。 これにより、インストゥルメントされたアクティビティーが何回実行され、それらにどのくらいの時間がかかったかを判断できます。 イベント情報を取得して、特定のスレッドのアクティビティー、または相互排他ロックやファイルなどの特定のオブジェクトに関連付けられているアクティビティーを表示できます。
PERFORMANCE_SCHEMA
ストレージエンジンは、サーバーソースコードで「インストゥルメンテーションポイント」を使用して、イベントデータを収集します。収集されたイベントは、
performance_schema
データベース内のテーブルに格納されます。 これらのテーブルは、ほかのテーブルと同様にSELECT
ステートメントを使用してクエリーできます。パフォーマンススキーマの構成は、SQL ステートメントから
performance_schema
データベース内のテーブルを更新することによって、動的に変更できます。 構成の変更はデータコレクションにすぐに影響しません。パフォーマンススキーマ内のテーブルは、永続的なディスク上のストレージを使用しないインメモリーテーブルです。 コンテンツは、サーバーの起動時から再移入され、サーバーの停止時に破棄されます。
-
モニタリングは MySQL でサポートされているすべてのプラットフォームで使用できます。
いくつかの制限が適用されることがあります。タイマーの種類はプラットフォームごとに異なることがあります。 ストレージエンジンに適用されるインストゥルメントは、すべてのストレージエンジンに実装されていないことがあります。 各サードパーティーエンジンのインストゥルメンテーションはエンジン管理者の責任です。 セクション27.20「パフォーマンススキーマの制約」も参照してください。
データコレクションは、サーバーソースコードを変更し、インストゥルメンテーションを追加することによって実装されます。 レプリケーションやイベントスケジューラなどのほかの機能と異なり、パフォーマンススキーマに関連付けられた個別のスレッドはありません。
パフォーマンススキーマは、サーバーパフォーマンスに与える影響を最小にしながら、サーバー実行に関する有益な情報へのアクセスを提供することを目的としています。 実装はこれらの設計目標に従います。
パフォーマンススキーマのアクティブ化によって、サーバーの動作は変更されません。 たとえば、それによってスレッドスケジューリングが変更されず、クエリー実行計画 (
EXPLAIN
によって表示される) が変更されません。サーバーのモニタリングはごくわずかなオーバーヘッドで、継続的かつ目立たずに行われます。 パフォーマンススキーマのアクティブ化によって、サーバーが使用不能になりません。
パーサーは変更されません。 新しいキーワードやステートメントはありません。
パフォーマンススキーマが内部で失敗しても、サーバーコードの実行は正常に続行されます。
初期のイベントの収集時に処理を実行するか、あとのイベント取得時に処理を実行するかのどちらかを選択する場合、収集が速くなるほうが優先されます。 これは、取得がオンデマンドで、まったく行われないこともあるのに対し、収集は進行中であるためです。
「最もパフォーマンスの高いスキーマ」テーブルには、全テーブルスキャン以外の実行計画へのアクセス権をオプティマイザに付与するインデックスがあります。 詳細は、セクション8.2.4「パフォーマンススキーマクエリーの最適化」を参照してください。
新しいインストゥルメンテーションポイントを追加することは簡単です。
インストゥルメンテーションはバージョン管理されます。 インストゥルメンテーションの実装が変更されても、以前にインストゥルメントされたコードは引き続き機能します。 これは、最新のパフォーマンススキーマの変更と同期させておくために、各プラグインをアップグレードする必要がないため、サードパーティープラグインの開発者にメリットがあります。
MySQL sys
スキーマは、パフォーマンススキーマによって収集されたデータへの便利なアクセスを提供する一連のオブジェクトです。 sys
スキーマはデフォルトでインストールされます。 使用手順については、第28章「MySQL sys スキーマ」 を参照してください。