MySQL 5.7 AWS RDSインスタンスがdb.m4.largeインスタンスで実行されています。そのインスタンスタイプの基本的なリソースは次のとおりです。
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以下の数に減らすことを計画しています。
これが私の質問です:
短い答え:問題ありません。
長い答え:
「インスタンス」機能は新しいものであり(5.5.4以降)、システムがピーク負荷で実行されているときに特定の処理を高速化するために存在します。しかし、それでも、数パーセントを超えるパフォーマンスには役立ちません。負荷の軽いサーバーの場合、改善はおそらく測定できません。
「8」はどうですか?各インスタンスが1GB未満のときに問題が発生するという話はまだ聞いていません。各インスタンスを少なくとも1GBにするのは「厳格な規則」ではなく「アドバイス」だと思います。実際、数ダースのサーバーをちらりと見ると、それらのほぼ半分が違反していることがわかります。 buffer_poolが2GBしかないインスタンスが10個あるマシンが1つあります。
RDSが適切な設定を提供することを信頼します。それらの設定が悪い場合、それらはallのクライアントにとって悪いでしょう。手間のかかるRDSを想像してみてください。