innodb_buffer_pool_size パラメーターは、InnoDB バッファープールのサイズを設定します。ビジネス要件に基づいて RDS MySQL インスタンスのこのパラメーターを調整し、インスタンスのパフォーマンスを向上させることができます。
開始する前に
お使いの RDS インスタンスは、次のいずれかの RDS エディションを実行しています。
RDS High-availability Edition
RDS Basic Edition
RDS Cluster Edition
制限事項
RDS MySQL の Serverless インスタンスは、innodb_buffer_pool_size パラメーターの手動変更をサポートしていません。インスタンスは、仕様の変更に基づいて InnoDB バッファープールのサイズを自動的に調整します。
RDS MySQL インスタンスの innodb_buffer_pool_size パラメーターが大きすぎると、メモリ不足 (OOM) が発生し、プライマリ/セカンダリのスイッチオーバーがトリガーされる可能性があります。この Topic で推奨されているバッファープールの最大値に基づいてパラメーターを設定することをお勧めします。
シナリオ
日常的な使用では、メモリが限られている場合を除き、データベースのパフォーマンスを最適化するためにこのパラメーターを増やすことをお勧めします。
増加: サーバーのメモリが十分な場合、innodb_buffer_pool_size を増やすと、ディスク I/O スループットを効果的に削減できます。クエリされたデータが完全にまたはほとんどメモリに保存できる場合、CPU はディスク I/O を頻繁に待つ必要がなくなり、CPU 使用率の削減に役立ちます。たとえば、頻繁に実行される UPDATE 文の場合、バッファープールが大きいほどディスクへの依存度が減り、ロック待ちが減少し、特に多くのレコードが更新される場合に MySQL がデータ更新を処理する効率が向上します。
減少: メモリリソースが限られている場合、または他のアプリケーションが高いメモリ要件を持つ場合は、innodb_buffer_pool_size パラメーターの値を減らすことができます。
InnoDB バッファープールのサイズ
innodb_buffer_pool_size パラメーターを再設定して、RDS インスタンスの InnoDB バッファープールのサイズを変更できます。現在、このパラメーターは数式を使用してのみ変更できます。数式は次のとおりです。
{DBInstanceClassMemory*X/Y}
# 例: {DBInstanceClassMemory*7/10}DBInstanceClassMemoryは RDS インスタンスタイプのメモリ (システム変数) で、X/Yはバッファープールサイズとインスタンスメモリの比率を表します。調整可能な範囲は [128 MB, DBInstanceClassMemory * 9 / 10] です。つまり、最小値は 128 MB で、最大値は RDS インスタンスメモリの 90% です。
InnoDB バッファープールサイズのデフォルト値
高性能ローカルディスクインスタンス
次のインスタンスタイプでは、デフォルトのバッファープールサイズはインスタンスメモリの 80% から 90% です。他のインスタンスタイプの場合、デフォルト値はインスタンスメモリの 75% (インスタンスメモリ * 3 / 4) です。
インスタンスファミリー | インスタンスタイプ | CPU とメモリ | デフォルト値 (MB) とインスタンスメモリの割合 |
汎用インスタンスタイプ | rds.mysql.s3.large | 4 コア, 8 GB | 7372 (90%) |
rds.mysql.m1.medium | 4 コア, 16 GB | 14745 (90%) | |
rds.mysql.c1.large | 8 コア, 16 GB | 13107 (80%) | |
rds.mysql.c1.xlarge | 8 コア, 32 GB | 27852 (85%) | |
rds.mysql.c2.xlarge | 16 コア, 64 GB | 52428 (80%) | |
rds.mysql.c2.xlp2 | 16 コア, 96 GB | 78643 (80%) | |
専用インスタンス | mysql.x4.large.2 | 4 コア, 16 GB | 14745 (90%) |
mysql.x8.large.2 | 4 コア, 32 GB | 29491 (90%) | |
mysql.x4.xlarge.2 | 8 コア, 32 GB | 27852 (85%) | |
mysql.x8.xlarge.2 | 8 コア, 64 GB | 55705 (85%) | |
mysql.x4.2xlarge.2 | 16 コア, 64 GB | 52428 (80%) | |
mysql.x8.2xlarge.2 | 16 コア, 128 GB | 104857 (80%) |
ディスクインスタンス
汎用インスタンスタイプ
デフォルトのバッファープールサイズはインスタンスメモリの 75% (インスタンスメモリ * 3 / 4) です。
専用インスタンスタイプ
デフォルトのバッファープールサイズ:
(インスタンスメモリ - システム予約メモリ) * 3 / 4システム予約メモリを計算するための数式は
min{インスタンスメモリ / 2, 2048} + max{インスタンス CPU * 64, インスタンスメモリ / 64} + (インスタンスメモリ / 64) + 285です。ここで、インスタンスメモリの単位は MB です。
便宜上、次の表に専用インスタンスタイプのデフォルトのバッファープールサイズと推奨される最大バッファープールサイズを示します。
インスタンス CPU コア | インスタンスメモリ (MB) | バッファープールサイズ | |
デフォルト値 (MB) | 推奨値 (MB) | ||
2 | 4096 | 1024 | 1024 |
2 | 8192 | 4096 | 4096 |
2 | 16384 | 9216 | 10240 |
4 | 8192 | 4096 | 4096 |
4 | 16384 | 9216 | 10240 |
4 | 32768 | 21504 | 22528 |
8 | 16384 | 9216 | 10240 |
8 | 32768 | 21504 | 22528 |
8 | 65536 | 45056 | 48128 |
12 | 24576 | 15360 | 16384 |
12 | 49152 | 33792 | 35840 |
12 | 98304 | 69632 | 73728 |
16 | 32768 | 21504 | 22528 |
16 | 65536 | 45056 | 48128 |
16 | 131072 | 93184 | 99328 |
24 | 49152 | 32768 | 34816 |
24 | 98304 | 69632 | 73728 |
24 | 196608 | 140288 | 149504 |
32 | 65536 | 45056 | 47104 |
32 | 131072 | 93184 | 99328 |
32 | 262144 | 188416 | 200704 |
52 | 98304 | 67584 | 72704 |
52 | 196608 | 140288 | 149504 |
52 | 393216 | 283648 | 302080 |
64 | 262144 | 188416 | 200704 |
64 | 524288 | 378880 | 403456 |
102 | 786432 | 569344 | 607232 |
104 | 196608 | 138240 | 147456 |
104 | 393216 | 282624 | 302080 |
InnoDB バッファープールの容量は、常に innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances の倍数になります。
innodb_buffer_pool_chunk_sizeは 32 MB に固定されています。以前に作成されたインスタンスでは、128 MB の場合があります。ユーザーが設定した
innodb_buffer_pool_sizeの値が倍数でない場合、システムは自動的に最も近い整数倍に切り上げます。
たとえば、innodb_buffer_pool_chunk_size が 1 GB で innodb_buffer_pool_instances が 1 の場合、innodb_buffer_pool_size を 1.5 GB に設定すると、実際には 2 GB に調整されます。
単一の RDS インスタンスの InnoDB バッファープールサイズを変更する
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、[パラメーター] をクリックします。
[innodb_buffer_pool_size] パラメーターを見つけ、右側の
をクリックして変更し、[OK] をクリックします。[パラメーターの送信] をクリックし、確認ダイアログボックスで [OK] をクリックします。
説明RDS MySQL 5.6 の
innodb_buffer_pool_sizeパラメーターを変更するには再起動が必要ですが、RDS MySQL 5.7 および 8.0 では必要ありません。
複数の RDS インスタンスの InnoDB バッファープールサイズを一度に変更する
パラメーターテンプレートを作成して [innodb_buffer_pool_size] を変更し、変更が必要なインスタンスに適用できます。このパラメーターを含むパラメーターテンプレートがすでに作成されている場合は、テンプレート内のこのパラメーターの値を変更するだけで済みます。その後、一度に複数の RDS インスタンスにテンプレートを適用できます。詳細については、「パラメーターテンプレートの使用」をご参照ください。

参照
インスタンスのモニタリング情報や低速ログ分析に基づいて、RDS MySQL のメモリ使用量の問題を分析して処理することもできます。