MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

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

5.1.9.5 構造化システム変数

構造化システム変数は 2 つの点で通常のシステム変数と異なります。

MySQL では、キーキャッシュの操作を制御するパラメータを指定する構造化変数タイプがサポートされます。 キーキャッシュ構造化変数には次のコンポーネントがあります。

このセクションでは、構造化変数を参照するための構文について説明します。 キーキャッシュ変数は構文の例で使用されますが、キーキャッシュの操作方法についての具体的な詳細は、セクション8.10.2「MyISAM キーキャッシュ」に記載されています。

構造化変数インスタンスのコンポーネントを参照するには、instance_name.component_name 形式の複合名を使用できます。 例:

hot_cache.key_buffer_size
hot_cache.key_cache_block_size
cold_cache.key_cache_block_size

それぞれの構造化システム変数には、default という名前のインスタンスが常に事前定義されます。 インスタンス名を付けずに構造化変数のコンポーネントを参照した場合、default インスタンスが使用されます。 つまり、default.key_buffer_size および key_buffer_size は両方とも同じシステム変数を指します。

構造化変数インスタンスおよびコンポーネントは次の命名ルールに従います。

現時点では、構造化変数タイプはキーキャッシュのものだけであるため、最初の 2 つのルールが違反される可能性はありません。 これらのルールでは、将来、他のタイプの構造化変数が作成される場合に重要性が高くなる可能性があります。

1 つの例外はありますが、単純な変数名を指定できるあらゆるコンテキストで、複合名を使用すると構造化変数コンポーネントを参照できます。 たとえば、コマンド行オプションを使用すると、構造化変数に値を割り当てることができます。

shell> mysqld --hot_cache.key_buffer_size=64K

オプションファイルでは、次の構文を使用します。

[mysqld]
hot_cache.key_buffer_size=64K

このオプションでサーバーを起動する場合、デフォルトサイズが 8M バイトのデフォルトのキーキャッシュに加えて、サイズが 64K バイトの hot_cache という名前のキーキャッシュが作成されます。

次のようにサーバーを開始したとします。

shell> mysqld --key_buffer_size=256K \
         --extra_cache.key_buffer_size=128K \
         --extra_cache.key_cache_block_size=2048

この場合、サーバーはデフォルトキーキャッシュのサイズを 256K バイトに設定します。 (--default.key_buffer_size=256K と記述することもできます)。 さらに、このサーバーは、128K バイトのサイズを持つ extra_cache という名前の 2 番目のキーキャッシュを作成し、テーブルインデックスブロックのキャッシュ用のブロックバッファーのサイズを 2048 バイトに設定します。

次の例では、サイズの比が 3:1:1 である 3 つの異なるキーキャッシュを指定してサーバーを開始します。

shell> mysqld --key_buffer_size=6M \
         --hot_cache.key_buffer_size=2M \
         --cold_cache.key_buffer_size=2M

構造化変数値は実行時にも設定および取得できます。 たとえば、hot_cache という名前のキーキャッシュを 10M バイトのサイズに設定するには、次のステートメントのどちらかを使用します。

mysql> SET GLOBAL hot_cache.key_buffer_size = 10*1024*1024;
mysql> SET @@GLOBAL.hot_cache.key_buffer_size = 10*1024*1024;

キャッシュサイズを取得するには、次のようにします。

mysql> SELECT @@GLOBAL.hot_cache.key_buffer_size;

ただし、次のステートメントは機能しません。 この変数は複合名として解釈されず、LIKE のパターンマッチング操作の単純文字列として解釈されます。

mysql> SHOW GLOBAL VARIABLES LIKE 'hot_cache.key_buffer_size';

これは、単純な変数名を指定できるすべての場所で構造化変数を使用できる例外です。