web-dev-qa-db-ja.com

6 GBのバッファープールを備えた中レベルのAWS RDSサーバーのinnodb_buffer_pool_instancesの最適な設定は何ですか?

MySQL 5.7 AWS RDSインスタンスがdb.m4.largeインスタンスで実行されています。そのインスタンスタイプの基本的なリソースは次のとおりです。

  1. 7.5GB RAM
  2. 2 VCPU

RDSのデフォルトは、RAMの75%をinnodb_buffer_pool_sizeに割り当てる計算です。

{DBInstanceClassMemory*3/4}

これは最終的に6GBの割り当てになります。

mysql> SELECT @@innodb_buffer_pool_size/1024/1024/1024;
+------------------------------------------+
| @@innodb_buffer_pool_size/1024/1024/1024 |
+------------------------------------------+
|                           6.000000000000 |
+------------------------------------------+

MySQL 5.7では、バッファープールインスタンスの数を設定しない場合、MySQLのデフォルトは8つのプールになります。ただし、 MySQL 5.7マニュアルの状態 バッファープールインスタンスについて説明するときは、次のようになります。

指定した合計サイズは、すべてのバッファプールに分割されます。最高の効率を得るには、各バッファープールインスタンスが少なくとも1GBになるように、innodb_buffer_pool_instancesとinnodb_buffer_pool_sizeの組み合わせを指定します。

このため、innodb_buffer_pool_instancesを6以下の数に減らすことを計画しています。

これが私の質問です:

  1. CPUの数とbuffer_pool_instances設定の間に相関関係がありますか?
  2. このシナリオでは、4、5、または6つのbuffer_pool_instancesを使用する方が良いでしょうか。そうであれば、その推奨の背後にある理由は何ですか?私の単純な対応は、「少なくとも1GB」の推奨を満たすように設定を6つのバッファープールインスタンスに変更することですが、これをさらに詳しく調べた人、またはこの設定のベンチマークを行った人から聞いて興味があります。 RDSかどうか。
1
gview

短い答え:問題ありません。

長い答え:

「インスタンス」機能は新しいものであり(5.5.4以降)、システムがピーク負荷で実行されているときに特定の処理を高速化するために存在します。しかし、それでも、数パーセントを超えるパフォーマンスには役立ちません。負荷の軽いサーバーの場合、改善はおそらく測定できません。

「8」はどうですか?各インスタンスが1GB未満のときに問題が発生するという話はまだ聞いていません。各インスタンスを少なくとも1GBにするのは「厳格な規則」ではなく「アドバイス」だと思います。実際、数ダースのサーバーをちらりと見ると、それらのほぼ半分が違反していることがわかります。 buffer_poolが2GBしかないインスタンスが10個あるマシンが1つあります。

RDSが適切な設定を提供することを信頼します。それらの設定が悪い場合、それらはallのクライアントにとって悪いでしょう。手間のかかるRDSを想像してみてください。

1
Rick James