サーバーの実行をモニタリングするための機能です。パフォーマンススキーマには、これらの特性があります。パフォーマンススキーマは、実行時にサーバーの内部実行を検査する方法を提供します。データベースを使用して実装されます。パフォーマンススキーマは、主にパフォーマンスデータに焦点を合わせています。パフォーマンススキーマはサーバーイベントをモニターします。「イベント」は、時間がかかり、タイミング情報を収集できるようにインストゥルメントされた、サーバーが実行するすべてのことです。ステートメント実行のステージ、またはステートメント全体やステートメントのグループなどになります。I/O、テーブルロックなどに関する情報へのアクセスを提供します。サーバーの特定のインスタンスに固有です。以降では、パフォーマンススキーマテーブルはサーバーにローカルとみなされ、それらへの変更はバイナリログにレプリケートされたり、書き込まれたりしません。#14741537)現在のイベントに加えて、イベントの履歴とサマリーを取得できます。これにより、インストゥルメントされたアクティビティーが何回実行され、それらにどのくらいの時間がかかったかを判断できます。イベント情報を取得して、特定のスレッドのアクティビティー、または相互排他ロックやファイルなどの特定のオブジェクトに関連付けられているアクティビティーを表示できます。ストレージエンジンは、サーバーソースコードで「インストゥルメンテーションポイント」を使用して、イベントデータを収集します。データベース内のテーブルに格納されます。ステートメントを使用してクエリーできます。データベース内のテーブルを更新することによって、動的に変更できます。構成の変更はデータコレクションにすぐに影響しません。データベース内のテーブルは、永続的なディスク上ストレージを使用しないビューや一時テーブルです。サポートされているすべてのプラットフォームで使用できます。いくつかの制限が適用されることがあります。タイマーの種類はプラットフォームごとに異なることがあります。ストレージエンジンに適用されるインストゥルメントは、すべてのストレージエンジンに実装されていないことがあります。各サードパーティーエンジンのインストゥルメンテーションはエンジン管理者の責任です。セクションD.8「パフォーマンススキーマの制約」も参照してください。データコレクションは、サーバーソースコードを変更し、インストゥルメンテーションを追加することによって実装されます。レプリケーションやイベントスケジューラなどのほかの機能と異なり、パフォーマンススキーマに関連付けられた個別のスレッドはありません。パフォーマンススキーマは、サーバーパフォーマンスに与える影響を最小にしながら、サーバー実行に関する有益な情報へのアクセスを提供することを目的としています。実装はこれらの設計目標に従います。パフォーマンススキーマのアクティブ化によって、サーバーの動作は変更されません。サーバーの起動時に行われた以上のメモリー割り当ては行われません。固定サイズでの構造の早期割り当てを使用することで、それらのサイズ変更や再割り当てをする必要がなくなりますが、これは十分な実行時パフォーマンスの達成に重要です。サーバーのモニタリングはごくわずかなオーバーヘッドで、継続的かつ目立たずに行われます。パフォーマンススキーマのアクティブ化によって、サーバーが使用不能になりません。パーサーは変更されません。新しいキーワードやステートメントはありません。パフォーマンススキーマが内部で失敗しても、サーバーコードの実行は正常に続行されます。初期のイベントの収集時に処理を実行するか、あとのイベント取得時に処理を実行するかのどちらかを選択する場合、収集が速くなるほうが優先されます。これは、取得がオンデマンドで、まったく行われないこともあるのに対し、収集は進行中であるためです。新しいインストゥルメンテーションポイントを追加することは簡単です。インストゥルメンテーションはバージョン管理されます。インストゥルメンテーションの実装が変更された場合、以前にインストゥルメントされたコードが動作し続けます。これは、最新のパフォーマンススキーマの変更と同期させておくために、各プラグインをアップグレードする必要がないため、サードパーティープラグインの開発者にメリットがあります。