

# Amazon RDS での MariaDB のキャッシュウォームアップ
<a name="MariaDB.Concepts.XtraDBCacheWarming"></a>

InnoDB キャッシュウォームアップでは、DB インスタンスがシャットダウンされたときのバッファプールの最新の状態を保存し、DB インスタンスが起動されたときに保存された情報からバッファプールを再ロードすることによって、MariaDB DB インスタンスのパフォーマンスを向上させることができます。このアプローチにより、通常のデータベースの使用からバッファプールを「ウォームアップする」必要がなくなり、既知の一般的なクエリのページを使用してバッファプールを事前にロードします。キャッシュウォームアップの詳細については、MariaDB ドキュメントの「[バッファプールのダンプと復元](http://mariadb.com/kb/en/mariadb/xtradbinnodb-buffer-pool/#dumping-and-restoring-the-buffer-pool)」を参照してください。

MariaDB 10.3 以上の DB インスタンスでは、キャッシュウォームアップはデフォルトで有効になっています。有効にするには、DB インスタンスのパラメータグループで `innodb_buffer_pool_dump_at_shutdown` および `innodb_buffer_pool_load_at_startup` パラメータを 1 に設定します。パラメータグループのこれらのパラメータ値を変更すると、パラメータグループを使用するすべての MariaDB DB インスタンスに影響します。特定の MariaDB DB インスタンスの キャッシュウォームアップを有効にするには、それらの DB インスタンスの新しいパラメータグループを作成することが必要になる場合があります。パラメータグループについては、「[Amazon RDS のパラメータグループ](USER_WorkingWithParamGroups.md)」を参照してください。

キャッシュウォームアップは、主に、スタンダードストレージを使用する DB インスタンスにパフォーマンス上のメリットをもたらします。PIOPS ストレージを使用する場合、一般的に大きなパフォーマンス上のメリットは見られません。

**重要**  
フェイルオーバー時など、MariaDB DB インスタンスが正常にシャットダウンしなかった場合、バッファプールの状態はディスクに保存されません。この場合、DB インスタンスが再開されるときに、MariaDB は利用可能なバッファプールファイルをロードします。特に害はありませんが、復元済みバッファプールは、再起動前のバッファプールの最新の状態を反映していない可能性があります。スタートアップ時に キャッシュをウォームアップするために、バッファプールの最新の状態を利用できるように、定期的に「オンデマンド」でバッファプールをダンプすることをお勧めします。バッファプールをオンデマンドでダンプまたはロードできます。  
自動で定期的にバッファプールをダンプするイベントを作成できます。例えば、次のステートメントは、1 時間ごとにバッファプールをダンプする `periodic_buffer_pool_dump` という名前のイベントを作成します。  

```
1. CREATE EVENT periodic_buffer_pool_dump 
2.    ON SCHEDULE EVERY 1 HOUR 
3.    DO CALL mysql.rds_innodb_buffer_pool_dump_now();
```
詳細については、MariaDB のドキュメントの「[イベント](http://mariadb.com/kb/en/mariadb/stored-programs-and-views-events/)」を参照してください。

## オンデマンドでのバッファプールのダンプとロード
<a name="MariaDB.Concepts.XtraDBCacheWarming.OnDemand"></a>

次のストアドプロシージャを使用して、 キャッシュをオンデマンドで格納しロードできます。
+ バッファプールの現在の状態をディスクにダンプするには、[mysql.rds\_innodb\_buffer\_pool\_dump\_now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_dump_now) ストアドプロシージャを呼び出します。
+ バッファプールの保存された状態をディスクからロードするには、[mysql.rds\_innodb\_buffer\_pool\_load\_now](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_now) ストアドプロシージャを呼び出します。
+ 進行中のロードオペレーションをキャンセルするには、[mysql.rds\_innodb\_buffer\_pool\_load\_abort](mysql-stored-proc-warming.md#mysql_rds_innodb_buffer_pool_load_abort) ストアドプロシージャを呼び出します。