クライアントは、MySQL サーバーに接続すると、特定のユーザー名で特定のホストから接続します。 パフォーマンススキーマは、次のテーブルを使用して、これらの接続に関する統計情報を提供し、アカウント (ユーザーとホストの組み合わせ) ごとに追跡したり、ユーザー名とホスト名ごとに個別に追跡したりします:
accounts
: クライアントアカウントごとの接続統計hosts
: クライアントホスト名ごとの接続統計users
: クライアントユーザー名ごとの接続統計
接続テーブルの 「account」 の意味は、mysql
システムデータベースの MySQL 付与テーブルでの意味と似ていますが、この用語はユーザーとホストの値の組合せを意味します。 権限付与テーブルの場合、アカウントのホスト部分はパターンにできますが、「パフォーマンススキーマ」テーブルの場合、ホスト値は常に特定のパターン以外のホスト名になります。
各接続テーブルには、統計の基になる「「トラッキング値」」当たりの現在の接続数および合計接続数を追跡するための CURRENT_CONNECTIONS
カラムと TOTAL_CONNECTIONS
カラムがあります。 テーブルは、それらが追跡値に使用するものに違いがあります。 accounts
テーブルには、ユーザーとホストの組合せごとに接続を追跡するための USER
カラムと HOST
カラムがあります。 users
テーブルと hosts
テーブルには、ユーザー名とホスト名ごとに接続を追跡するための USER
カラムと HOST
カラムがそれぞれあります。
パフォーマンススキーマは、NULL
の USER
および HOST
カラム値を持つ行を使用して、認証に失敗したユーザーセッションの内部スレッドとスレッドもカウントします。
user1
と user2
というクライアントがそれぞれ hosta
と hostb
から一度に接続するとします。 パフォーマンススキーマは次のように接続を追跡します。
accounts
テーブルには、user1
/hosta
、user1
/hostb
、user2
/hosta
およびuser2
/hostb
アカウント値について、各行でアカウントごとに 1 つの接続がカウントされる 4 つの行があります。hosts
テーブルには 2 つの行があり、hosta
およびhostb
の場合、各行はホスト名ごとに 2 つの接続をカウントします。users
テーブルには 2 つの行があり、user1
およびuser2
の場合、各行はユーザー名ごとに 2 つの接続をカウントします。
クライアントが接続すると、パフォーマンススキーマは、各テーブルに適した追跡値を使用して、各接続テーブルのどの行が適用されるかを決定します。 そのような行がない場合、追加されます。 次に、パフォーマンススキーマはその行の CURRENT_CONNECTIONS
および TOTAL_CONNECTIONS
カラムを 1 つ増分します。
クライアントが切断すると、パフォーマンススキーマはその行の CURRENT_CONNECTIONS
カラムを 1 つ減分し、TOTAL_CONNECTIONS
カラムは変更しないままにします。
TRUNCATE TABLE
は接続テーブルに対して許可されます。 これには次の効果があります:
現在の接続を持たないアカウント、ホストまたはユーザー (
CURRENT_CONNECTIONS = 0
の行) の行は削除されます。削除されていない行はリセットされ、現在の接続のみがカウントされます:
CURRENT_CONNECTIONS > 0
の行の場合、TOTAL_CONNECTIONS
はCURRENT_CONNECTIONS
にリセットされます。このセクションの後半で説明するように、接続テーブルに依存するサマリーテーブルは暗黙的に切り捨てられます。
パフォーマンススキーマは、アカウント、ホスト、またはユーザーごとにさまざまなイベントタイプの接続統計を集約するサマリーテーブルを保持します。 これらのテーブルの名前には、_summary_by_account
、_summary_by_host
または_summary_by_user
が含まれます。 識別するには、次のクエリーを使用します:
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'performance_schema'
AND TABLE_NAME REGEXP '_summary_by_(account|host|user)'
ORDER BY TABLE_NAME;
+------------------------------------------------------+
| TABLE_NAME |
+------------------------------------------------------+
| events_errors_summary_by_account_by_error |
| events_errors_summary_by_host_by_error |
| events_errors_summary_by_user_by_error |
| events_stages_summary_by_account_by_event_name |
| events_stages_summary_by_host_by_event_name |
| events_stages_summary_by_user_by_event_name |
| events_statements_summary_by_account_by_event_name |
| events_statements_summary_by_host_by_event_name |
| events_statements_summary_by_user_by_event_name |
| events_transactions_summary_by_account_by_event_name |
| events_transactions_summary_by_host_by_event_name |
| events_transactions_summary_by_user_by_event_name |
| events_waits_summary_by_account_by_event_name |
| events_waits_summary_by_host_by_event_name |
| events_waits_summary_by_user_by_event_name |
| memory_summary_by_account_by_event_name |
| memory_summary_by_host_by_event_name |
| memory_summary_by_user_by_event_name |
+------------------------------------------------------+
個々の接続サマリーテーブルの詳細は、サマリーが作成されたイベントタイプのテーブルについて説明しているセクションを参照してください:
待機イベントのサマリー: セクション27.12.18.1「待機イベント要約テーブル」
ステージイベントサマリー: セクション27.12.18.2「ステージサマリーテーブル」
ステートメントイベントサマリー: セクション27.12.18.3「ステートメントサマリーテーブル」
トランザクションイベントサマリー: セクション27.12.18.5「トランザクション要約テーブル」
メモリーイベントサマリー: セクション27.12.18.10「メモリーサマリーテーブル」
エラーイベントサマリー: セクション27.12.18.11「エラー要約テーブル」
TRUNCATE TABLE
は接続サマリーテーブルに使用できます。 接続のないアカウント、ホストまたはユーザーの行を削除し、残りの行のサマリーカラムをゼロにリセットします。 また、アカウント、ホスト、ユーザーまたはスレッド別に集計された各サマリーテーブルは、依存する接続テーブルの切捨てによって暗黙的に切り捨てられます。 次のテーブルに、接続テーブルの切捨てと暗黙的に切り捨てられたテーブルの関係を示します。
表 27.2 接続テーブルの切捨ての暗黙的な影響
切り捨てられた接続テーブル | 暗黙的に切り捨てられたサマリーテーブル |
---|---|
accounts |
_summary_by_account 、_summary_by_thread を含む名前を持つテーブル |
hosts |
_summary_by_account , _summary_by_host , _summary_by_thread を含む名前を持つテーブル |
users |
_summary_by_account , _summary_by_user , _summary_by_thread を含む名前を持つテーブル |
_summary_global
サマリーテーブルを切り捨てると、対応する接続およびスレッドサマリーテーブルも暗黙的に切り捨てられます。 たとえば、events_waits_summary_global_by_event_name
を切り捨てると、アカウント、ホスト、ユーザーまたはスレッドごとに集計された待機イベントサマリーテーブルが暗黙的に切り捨てられます。