innodb_buffer_pool_size パラメーターは、InnoDB バッファプールのサイズを指定します。このパラメーターを調整することで、ApsaraDB RDS for MySQL インスタンスのパフォーマンスを向上させることができます。
前提条件
このトピックは、以下のインスタンスエディションに適用されます:
-
RDS High-availability Edition
-
RDS Basic Edition
-
RDS Cluster Edition
制限事項
-
ApsaraDB RDS for MySQL サーバーレスインスタンスの
innodb_buffer_pool_sizeパラメーターは、手動で変更できません。インスタンスは、インスタンス仕様の変更時に InnoDB バッファプールサイズを自動的に調整します。 -
ApsaraDB RDS for MySQL インスタンスの
innodb_buffer_pool_sizeパラメーターを高く設定しすぎると、メモリ不足 (OOM) エラーが発生し、フェールオーバーが発生する可能性があります。これを防ぐために、このトピックで推奨される最大値に従ってバッファプールサイズを設定してください。
ユースケース
メモリが制限されていない限り、データベースのパフォーマンスを最適化するためにこのパラメーターを増やしてください。
-
サイズの増加:サーバーに十分なメモリがある場合、
innodb_buffer_pool_sizeを増やすことで、ディスク I/O を大幅に削減できます。クエリされたデータを完全にまたはほぼ完全にメモリに格納できる場合、CPU がディスク I/O を待つ時間が短くなり、全体的な CPU 使用率が低下します。たとえば、頻繁に実行される UPDATE ステートメントの場合、より大きなバッファプールはディスクへの依存度を減らし、行ロック競合を緩和します。これにより、特に大量のレコードを更新する際のパフォーマンスが向上します。 -
サイズの減少:メモリが制限されている場合、または他のアプリケーションが大量のメモリを必要とする場合は、
innodb_buffer_pool_sizeの値を減らしてください。
InnoDB バッファプールサイズ
次の計算式を使用して innodb_buffer_pool_size パラメーターを設定することで、InnoDB バッファプールサイズを調整できます。
{DBInstanceClassMemory*X/Y}
# 例: {DBInstanceClassMemory*7/10}
-
DBInstanceClassMemoryは RDS インスタンスのメモリ容量 (システム変数) であり、X/Yはバッファプールサイズとインスタンスメモリの比率を表します。 -
調整可能な範囲は、128 MB からインスタンスの総メモリの 90% (
DBInstanceClassMemory * 9 / 10) までです。
デフォルトの 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) です。
専用仕様
-
Default Buffer Pool size:
(instance memory - system reserved memory) * 3 / 4 -
The formula for calculating system reserved memory is:
min{Instance Memory / 2, 2048} + max{Instance CPU * 64, Instance Memory / 64} + (Instance Memory / 64) + 285, where the unit for instance memory is 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 が 128 MB、innodb_buffer_pool_instances が 1 の場合、innodb_buffer_pool_size を 200 MB に設定すると、その値は 128 MB の倍数ではないため、最も近い倍数である 256 MB に自動的に切り上げられます。
単一インスタンスのバッファプールの調整
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
左側のナビゲーションペインで、パラメーターの設定 をクリックします。
-
innodb_buffer_pool_size パラメーターを見つけ、「操作」列の
アイコンをクリックしてその値を変更し、OK をクリックします。 -
変更の送信 をクリックします。表示されたダイアログボックスで、OK をクリックします。
説明innodb_buffer_pool_sizeパラメーターを変更すると、ApsaraDB RDS for MySQL 5.6 では再起動が必要ですが、ApsaraDB RDS for MySQL 5.7 および 8.0 では再起動は不要です。
パラメーターテンプレートを使用した調整
新しいパラメータテンプレートを作成して [innodb_buffer_pool_size] を変更し、そのテンプレートをターゲットインスタンスに適用できます。 既存のパラメータテンプレートがある場合は、それを変更してターゲットインスタンスに適用できます。 詳細については、「パラメータテンプレートの使用」をご参照ください。
[実行値] を {DBInstanceClassMemory*7/10} に設定します。テンプレートを適用した後、変更を有効にするには、ApsaraDB RDS for MySQL 5.6 インスタンスを再起動する必要があります。バージョン 5.7 および 8.0 では再起動は不要です。
関連ドキュメント
インスタンスのモニタリング データとスロークエリログ 分析を使用して、ApsaraDB RDS for MySQL のメモリ使用量の問題を分析し、解決することもできます。