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


MySQL 8.0 リファレンスマニュアル  /  ...  /  複数のバッファープールインスタンスの構成

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

15.8.3.2 複数のバッファープールインスタンスの構成

バッファープールが数 G バイトの範囲にあるシステムでは、バッファープールを個別のインスタンスに分割すると、キャッシュされたページに対して異なるスレッドが読み取りおよび書き込みを行うときの競合が減るため、並列性が向上する場合があります。 この機能は通常、バッファープールのサイズが数 G バイトの範囲にあるシステムを対象にしています。 複数のバッファープールインスタンスは innodb_buffer_pool_instances 構成オプションを使用して構成され、また innodb_buffer_pool_size 値を調整することもできます。

InnoDB バッファプールが大きい場合、メモリーから取得することで多くのデータリクエストを満たすことができます。 複数のスレッドが一度にバッファープールにアクセスしようとした場合は、ボトルネックが発生する可能性があります。 この競合を最小限に抑えるために、複数のバッファープールを有効にすることができます。 バッファープールに格納されるか、またはバッファープールから読み取られる各ページは、ハッシュ関数を使用して、いずれかのバッファープールにランダムに割り当てられます。 各バッファプールは、バッファプールに接続されている独自の空きリスト、フラッシュリスト、LRU およびその他のすべてのデータ構造を管理します。 MySQL 8.0 より前は、各バッファープールは独自のバッファープール相互排他ロックによって保護されていました。 MySQL 8.0 以降では、競合を減らすために、バッファープール mutex が複数のリストおよびハッシュ保護 mutex に置き換えられました。

複数のバッファープールインスタンスを有効にするには、innodb_buffer_pool_instances 構成オプションを 1 (デフォルト) より大きく 64 (最大) までの値に設定します。 このオプションは、innodb_buffer_pool_size を 1GB 以上のサイズに設定した場合にのみ有効になります。 指定した合計サイズは、すべてのバッファープール間で分割されます。 最高の効率を得るには、innodb_buffer_pool_instancesinnodb_buffer_pool_size の組み合わせを、各バッファープールインスタンスが少なくとも 1G バイトになるように指定します。

InnoDB バッファープールサイズの変更については、セクション15.8.3.1「InnoDB バッファプールサイズの構成」 を参照してください。