このトピックでは、ビジネス要件に基づいてApsaraDB RDS for MySQLインスタンスのinnodb_buffer_pool_sizeパラメーターを設定して、RDSインスタンスのパフォーマンスを向上させる方法について説明します。
前提条件
RDSインスタンスは、次のいずれかのRDSエディションを実行します。
RDS高可用性エディション
RDSベーシックエディション
RDSクラスターエディション
制限事項
サーバーレスRDSインスタンスのinnodb_buffer_pool_sizeパラメーターの値を変更することはできません。 InnoDBバッファプールのサイズは、サーバーレスRDSインスタンスの仕様によって異なります。
背景情報
innodb_buffer_pool_sizeパラメーターを再設定して、RDSインスタンスのInnoDBバッファプールのサイズを変更できます。 このパラメータの値は、次の式を使用して計算されます。
{DBInstanceClassMemory * X/Y}
例:
{DBInstanceClassMemory * 7/10}
DBInstanceClassMemoryはシステム変数で、RDSインスタンスのメモリ容量を指定します。
Xは分子であり、Yは分母である。
InnoDBバッファプールのサイズは、[128 MB, DBInstanceClassMemory × 8/10] の範囲内でなければなりません。 最小サイズは128 MBです。 最大サイズは、RDSインスタンス用に購入したメモリ容量の80% です。
RDSインスタンスのInnoDBバッファプールのデフォルトサイズは、次のルールに基づいて計算されます。
RDSインスタンスがクラウドディスクを使用する汎用インスタンスである場合、またはRDSインスタンスがローカルディスクを使用する場合、InnoDBバッファプールのデフォルトサイズは、次の式を使用して計算されます。
InnoDBバッファプールのデフォルトサイズ=RDSインスタンスの購入メモリ容量 × 0.75
。RDSインスタンスがクラウドディスクを使用する専用インスタンスである場合、InnoDBバッファプールのデフォルトサイズは、次の式を使用して計算されます。
InnoDBバッファプールのデフォルトサイズ=(RDSインスタンスの購入済みメモリ容量-RDSインスタンスの予約済みメモリ容量) × 0.75
。説明RDSインスタンスがクラウドディスクを使用する専用インスタンスである場合、RDSインスタンスの予約メモリ容量 (MB) は次の式を使用して計算されます。
MIN (RDSインスタンスの購入メモリ容量 /2, 2048) + MAX (RDSインスタンスのCPUコア数 × 64, RDSインスタンスの購入メモリ容量 /64) + (RDSインスタンスの購入メモリ容量 /64) + 285
InnoDBバッファープールのデフォルトサイズは、128の整数倍です。 計算された結果が128の整数倍でない場合、結果は128の整数倍である最も近い整数に丸められます。 たとえば、RDSインスタンスは1,024 MBのメモリを提供し、計算結果は268、128の倍数である最も近い整数は256です。 この場合、RDSインスタンスのInnoDBバッファプールのデフォルトサイズは256 MBです。
次の表に、クラウドディスクを使用する専用RDSインスタンスのInnoDBバッファプールのデフォルトサイズと最大サイズを示します。
CPUコアの数 | メモリ容量 (単位: MB) | デフォルトのバッファプールサイズ (単位: MB) | 最大バッファプールサイズ (単位: MB) |
2 | 4,096 | 1,024 | 1,024 |
2 | 8,192 | 4,096 | 4,096 |
2 | 16,384 | 9,216 | 10,240 |
4 | 8,192 | 4,096 | 4,096 |
4 | 16,384 | 9,216 | 10,240 |
4 | 32,768 | 21,504 | 22,528 |
8 | 16,384 | 9,216 | 10,240 |
8 | 32,768 | 21,504 | 22,528 |
8 | 65,536 | 45,056 | 48,128 |
12 | 24,576 | 15,360 | 16,384 |
12 | 49,152 | 33,792 | 35,840 |
12 | 98,304 | 69,632 | 73,728 |
16 | 32,768 | 21,504 | 22,528 |
16 | 65,536 | 45,056 | 48,128 |
16 | 131,072 | 93,184 | 99,328 |
24 | 49,152 | 32,768 | 34,816 |
24 | 98,304 | 69,632 | 73,728 |
24 | 196,608 | 140,288 | 149,504 |
32 | 65,536 | 45,056 | 47,104 |
32 | 131,072 | 93,184 | 99,328 |
32 | 262,144 | 188,416 | 200,704 |
52 | 98,304 | 67,584 | 72,704 |
52 | 196,608 | 140,288 | 149,504 |
52 | 393,216 | 283,648 | 302,080 |
64 | 262,144 | 188,416 | 200,704 |
64 | 524,288 | 378,880 | 403,456 |
102 | 786,432 | 569,344 | 607,232 |
104 | 196,608 | 138,240 | 147,456 |
104 | 393,216 | 282,624 | 302,080 |
InnoDBバッファープールのサイズは、次の式を使用して得られる結果の整数倍である必要があります。innodb_buffer_pool_chunk_sizeパラメーターの値 × innodb_buffer_pool_instancesパラメーターの値
。 InnoDBバッファープールのサイズが式を使用して取得した結果の整数倍でない場合、ApsaraDB RDSはサイズを結果の整数倍に変更します。 たとえば、数式を使用して取得した結果が1 GBで、innodb_buffer_pool_sizeパラメーターを1.5 GBに設定した場合、ApsaraDBはinnodb_buffer_pool_size
パラメーターの値を2 GBに変更します。
単一のRDSインスタンスのInnoDBバッファプールのサイズを変更する
- [インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、パラメータ.
innodb_buffer_pool_sizeパラメーターを見つけて、アイコンをクリックします。 表示されるダイアログボックスで、新しい値を入力し、[OK] をクリックします。
[変更の適用] をクリックします。 表示されるダイアログボックスで、[OK] をクリックします。
説明MySQL 5.6を実行するRDSインスタンスのinnodb_buffer_pool_sizeパラメーターを変更した後、RDSインスタンスが再起動するのを待つ必要があります。 MySQL 5.7またはMySQL 8.0を実行するRDSインスタンスのinnodb_buffer_pool_sizeパラメーターを変更した後、RDSインスタンスが再起動するのを待つ必要はありません。
一度に複数のRDSインスタンスのInnoDBバッファプールのサイズを変更する
innodb_buffer_pool_sizeパラメーターを含むパラメーターテンプレートを作成できます。 次に、テンプレートを複数のRDSインスタンスに適用して、これらのRDSインスタンスのInnoDBバッファプールのサイズを一度に変更できます。 このパラメーターを含むパラメーターテンプレートが作成されている場合は、テンプレートでこのパラメーターの値を変更するだけです。 次に、一度に複数のRDSインスタンスにテンプレートを適用できます。 詳細については、「パラメーターテンプレートの使用」をご参照ください。