MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  MySQL パフォーマンススキーマ  /  パフォーマンススキーマ起動構成

27.3 パフォーマンススキーマ起動構成

MySQL パフォーマンススキーマを使用するには、イベント収集を有効にするために、サーバーの起動時に有効にする必要があります。

パフォーマンススキーマはデフォルトで有効になっています。 それを明示的に有効または無効にするには、performance_schema 変数を適切な値に設定して、サーバーを起動します。 たとえば、サーバー my.cnf ファイルで次の行を使用します:

[mysqld]
performance_schema=ON

パフォーマンススキーマの初期化時に、サーバーが内部バッファーを割り当てることができない場合、パフォーマンススキーマは自動的に無効になり、performance_schemaOFF に設定して、サーバーがインストゥルメンテーションなしで実行します。

パフォーマンススキーマでは、サーバーの起動時にインストゥルメントおよびコンシューマ構成も許可されます。

サーバー起動時のインストゥルメントを制御するには、この形式のオプションを使用します。

--performance-schema-instrument='instrument_name=value'

ここで instrument_namewait/synch/mutex/sql/LOCK_open などのインストゥルメント名で、value はこれらのいずれかの値です。

  • OFFFALSE または 0: インストゥルメントの無効化

  • ONTRUE または 1: インストゥルメントの有効化および時間

  • COUNTED: インストゥルメントを有効にして (時間ではなく) カウント

--performance-schema-instrument オプションではインストゥルメント名を 1 つしか指定できませんが、オプションの複数のインスタンスを指定して、複数のインストゥルメントを構成できます。 さらに、インストゥルメント名にパターンを使用でき、パターンに一致するインストゥルメントを構成します。 すべての条件同期インストゥルメントを有効で、カウント対象として構成するには、次のオプションを使用します。

--performance-schema-instrument='wait/synch/cond/%=COUNTED'

すべてのインストゥルメントを無効にするには、次のオプションを使用します。

--performance-schema-instrument='%=OFF'

例外: memory/performance_schema/% インストゥルメントは組み込まれており、起動時に無効にすることはできません。

長いインストゥルメント名文字列は、順序に関係なく、短いパターン名より優先されます。 インストゥルメントを選択するためのパターンの指定については、セクション27.4.9「フィルタリング操作のインストゥルメントまたはコンシューマの指定」を参照してください。

認識されないインストゥルメント名は無視されます。 あとでインストールされたプラグインによってインストゥルメントを作成することは可能で、そのときに名前が認識され、構成されます。

サーバー起動時のコンシューマを制御するには、この形式のオプションを使用します。

--performance-schema-consumer-consumer_name=value

ここで、consumer_nameevents_waits_history などのコンシューマ名で、value はこれらのいずれかです。

  • OFFFALSE または 0: コンシューマのイベントを収集しない

  • ONTRUE または 1: コンシューマのイベントの収集

たとえば、events_waits_history コンシューマを有効にするには、次のオプションを使用します。

--performance-schema-consumer-events-waits-history=ON

許可されるコンシューマ名は、setup_consumers テーブルを調べるとわかります。 パターンは許可されません。 setup_consumers テーブル内のコンシューマ名は下線が使われますが、起動時に設定されたコンシューマでは、名前の中のダッシュと下線は同等です。

パフォーマンススキーマには、構成情報を提供するいくつかのシステム変数が含まれます。

mysql> SHOW VARIABLES LIKE 'perf%';
+--------------------------------------------------------+---------+
| Variable_name                                          | Value   |
+--------------------------------------------------------+---------+
| performance_schema                                     | ON      |
| performance_schema_accounts_size                       | 100     |
| performance_schema_digests_size                        | 200     |
| performance_schema_events_stages_history_long_size     | 10000   |
| performance_schema_events_stages_history_size          | 10      |
| performance_schema_events_statements_history_long_size | 10000   |
| performance_schema_events_statements_history_size      | 10      |
| performance_schema_events_waits_history_long_size      | 10000   |
| performance_schema_events_waits_history_size           | 10      |
| performance_schema_hosts_size                          | 100     |
| performance_schema_max_cond_classes                    | 80      |
| performance_schema_max_cond_instances                  | 1000    |
...

performance_schema 変数は ON または OFF で、パフォーマンススキーマが有効か無効かを示します。 ほかの変数はテーブルサイズ (行数) やメモリー割り当て値を示します。

注記

パフォーマンススキーマが有効にされている場合、パフォーマンススキーマインスタンスの数は、おそらく大きくサーバーメモリーフットプリントに影響します。 パフォーマンススキーマは、必要なだけメモリーを使用するように多くのパラメータを自動スケーリングします。セクション27.17「パフォーマンススキーマのメモリー割り当てモデル」 を参照してください。

パフォーマンススキーマシステム変数の値を変更するには、それらをサーバー起動時に設定します。 たとえば、待機イベントの履歴テーブルのサイズを変更するには、my.cnf ファイルに次の行を挿入します:

[mysqld]
performance_schema
performance_schema_events_waits_history_size=20
performance_schema_events_waits_history_long_size=15000

パフォーマンススキーマは、明示的に設定されていない場合、サーバーの起動時にいくつかのパラメータの値のサイズを自動的に設定します。 たとえば、それはイベント待機テーブルのサイズを制御するパラメータをこのようにサイズ設定します。 パフォーマンススキーマは、サーバーの起動時に必要なすべてのメモリーを割り当てるのではなく、メモリー使用量を実際のサーバー負荷に合わせて増分的に割り当てます。 したがって、多くのサイズ設定パラメータを設定する必要はありません。 自動サイズ設定または自動スケール設定されているパラメータを確認するには、mysqld --verbose --help を使用してオプションの説明を調べるか、セクション27.15「パフォーマンススキーマシステム変数」 を参照してください。

サーバーの起動時に設定されない自動サイズ設定されたパラメータごとに、パフォーマンススキーマは次のシステム値の値に基づいてその値を設定する方法を決定します。これらの値は、MySQL サーバーの構成方法について「ヒント」とみなされます:

max_connections
open_files_limit
table_definition_cache
table_open_cache

特定のパラメータの自動サイズ設定または自動スケーリングをオーバーライドするには、起動時に−1 以外の値に設定します。 この場合、パフォーマンススキーマはそれに指定された値を割り当てます。

実行時に、SHOW VARIABLES では、自動サイズ設定されたパラメータに設定されていた実際の値が表示されます。 自動スケールされたパラメータは−1 の値で表示されます。

パフォーマンススキーマが無効になっている場合、その自動サイズ変更されたパラメータと自動スケール変更されたパラメータは−1 のままで、SHOW VARIABLES には−1 と表示されます。


関連キーワード:  テーブル, パフォーマンス, スキーマ, performance, schema, events, インストゥルメント, history, 設定, サーバー