Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

27.12.8 パフォーマンススキーマ接続テーブル

クライアントは、MySQL サーバーに接続すると、特定のユーザー名で特定のホストから接続します。 パフォーマンススキーマは、次のテーブルを使用して、これらの接続に関する統計情報を提供し、アカウント (ユーザーとホストの組み合わせ) ごとに追跡したり、ユーザー名とホスト名ごとに個別に追跡したりします:

  • accounts: クライアントアカウントごとの接続統計

  • hosts: クライアントホスト名ごとの接続統計

  • users: クライアントユーザー名ごとの接続統計

接続テーブルの account の意味は、mysql システムデータベースの MySQL 付与テーブルでの意味と似ていますが、この用語はユーザーとホストの値の組合せを意味します。 権限付与テーブルの場合、アカウントのホスト部分はパターンにできますが、「パフォーマンススキーマ」テーブルの場合、ホスト値は常に特定のパターン以外のホスト名になります。

各接続テーブルには、統計の基になる「トラッキング値」当たりの現在の接続数および合計接続数を追跡するための CURRENT_CONNECTIONS カラムと TOTAL_CONNECTIONS カラムがあります。 テーブルは、それらが追跡値に使用するものに違いがあります。 accounts テーブルには、ユーザーとホストの組合せごとに接続を追跡するための USER カラムと HOST カラムがあります。 users テーブルと hosts テーブルには、ユーザー名とホスト名ごとに接続を追跡するための USER カラムと HOST カラムがそれぞれあります。

パフォーマンススキーマは、NULLUSER および HOST カラム値を持つ行を使用して、認証に失敗したユーザーセッションの内部スレッドとスレッドもカウントします。

user1user2 というクライアントがそれぞれ hostahostb から一度に接続するとします。 パフォーマンススキーマは次のように接続を追跡します。

  • accounts テーブルには、user1/hostauser1/hostbuser2/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_CONNECTIONSCURRENT_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                 |
+------------------------------------------------------+

個々の接続サマリーテーブルの詳細は、サマリーが作成されたイベントタイプのテーブルについて説明しているセクションを参照してください:

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 を切り捨てると、アカウント、ホスト、ユーザーまたはスレッドごとに集計された待機イベントサマリーテーブルが暗黙的に切り捨てられます。