web-dev-qa-db-ja.com

バッファプールインスタンスのサイズと数に関する経験則はありますか?

コンセンサスは約75%のRAMがバッファー・プール専用にする必要があると思われることを知っています。しかし、私はバッファプールインスタンスの最適な数にもっと興味があります。設定を決定するときに考慮すべき点は何ですか?

たとえば、75GBのバッファプールがあるとします。 75のバッファープールインスタンスをそれぞれ1GBで割り当てる必要がありますか?それぞれ5GBで15個ですか?または、それぞれ7.5 GBで10個ですか?

単一のバッファー・プールから始めて、ロックが表示されるかどうかに基づいて増やす必要がありますか?

インスタンスの最大数は何に基づくべきですか-利用可能なコア?

ありがとう-あなたの応答は大歓迎です。

7
user2732180

バッファプールインスタンス

私が通常使用する経験則は、Linux環境の特別なプログラムに基づいています

numactl --hardware

これを実行すると、次の出力が得られます

sh-4.1# numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3
node 0 size: 49151 MB
node 0 free: 241 MB
node 1 cpus: 4 5 6 7
node 1 size: 32768 MB
node 1 free: 39 MB
node 2 cpus: 8 9 10 11
node 2 size: 49152 MB
node 2 free: 49 MB
node 3 cpus: 12 13 14 15
node 3 size: 32752 MB
node 3 free: 32 MB
node distances:
node   0   1   2   3
  0:  10  16  16  16
  1:  16  10  16  16
  2:  16  16  10  16
  3:  16  16  16  10

これにより、DBサーバー上にあるCPUとコアの数がすぐにわかります。

一般に、 innodb_buffer_pool_instances を物理CPUの数またはコアの数に設定します。特に、 innodb_buffer_pool_instances を4または16に設定しました。

バッファプールサイズ

InnoDBバッファープールをインストールされているRAMの50%より大きくすると、mysqldによってOSがスワップを開始します...悪い!!!!大きなバッファープールが必要な場合は、 innodb_buffer_pool_instances のチューニングがさらに重要になります。

エピローグ

innodb_buffer_pool_instances が最初に導入された直後に、私はすぐにそれを試しました。 192 GBのDBサーバー、デュアルヘキサコア、162 GBのバッファープールを備えたクライアントがありました。私は単に2に設定し、すべてがうまくいきました。これに関する2011年2月12日の私の古い投稿を参照してください: MySQLを重いInnoDBワークロードに合わせてどのように調整しますか?

試してみる !!!

2
RolandoMySQLDBA

innodb_buffer_pool_sizeinnodb_buffer_pool_instancesを組み合わせて使用​​する必要があります

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

1
Mahesh Patil