RDS Optimized Writes for MySQL による書き込みパフォーマンスの向上
RDS Optimized Writes for MySQL によって、書き込みトランザクションのパフォーマンスを向上させることができます。RDS for MySQL データベースで RDS Optimized Writes を使用すると、書き込みトランザクションのスループットが最大 2 倍向上します。
トピック
RDS Optimized Writes の概要
RDS Optimized Writes を有効にすると、RDS for MySQL データベースは、データを耐久性のあるストレージにフラッシュするときに、二重書き込みバッファを必要とせずに一度だけ書き込みます。データベースは、ACID プロパティ保護機能の提供を継続することで、信頼性の高いデータベーストランザクションを実現するとともに、パフォーマンスを向上させます。
MySQL のようなリレーショナルデータベースには、原子性、一貫性、分離性、耐久性という ACID 特性があり、信頼性の高いデータベーストランザクションを実現できます。これらの特性を発揮するために、MySQL は部分的なページ書き込みエラーを防ぐ二重書き込みバッファと呼ばれるデータストレージ領域を使用しています。これらのエラーは、データベースがページを更新中に、停電時などのハードウェア障害が発生した場合に発生します。MySQL データベースは、部分的なページ書き込みを検出し、二重書き込みバッファ内のページのコピーによって回復できます。この手法で保護が可能ですが、余分な書き込みオペレーションも必要になります。MySQL の二重書き込みバッファの詳細については、MySQL ドキュメントの「二重書き込みバッファ
RDS Optimized Writes を有効にすると、RDS for MySQL データベースは、データを耐久性のあるストレージにフラッシュするときに、二重書き込みバッファを使用せずに一度だけ書き込みます。RDS Optimized Writes は、RDS for MySQL データベースで書き込みの多いワークロードを実行する場合に便利です。書き込みワークロードの高いデータベースの例としては、デジタル決済、金融取引、ゲームアプリケーションに対応したデータベースなどがあります。
これらのデータベースは、AWS Nitro System を使用する DB インスタンスクラスで実行されます。これらのシステムのハードウェア構成により、データベースは 16 KiB ページを 1 ステップで確実かつ永続的にデータファイルに直接書き込むことができます。AWS Nitro System により RDS Optimized Writes が可能になります。
新しいデータベースパラメータ rds.optimized_writes
を設定して、RDS for MySQL データベースの RDS Optimized Writes 機能を制御できます。RDS for MySQL バージョン 8.0 の DB パラメータグループから、このパラメータにアクセスします。次の値を使用してパラメータを設定します。
-
AUTO
– データベースが RDS Optimized Writes をサポートしている場合は有効にします。データベースが RDS Optimized Writes をサポートしていない場合は無効にします。この設定はデフォルトです。 -
OFF
– データベースが RDS Optimized Writes をサポートしている場合でも無効にします。
RDS Optimized Writes をサポートしないエンジンバージョン、DB インスタンスクラス、ファイルシステム形式の既存のデータベースがある場合は、ブルー/グリーンデプロイを作成することでこの機能を有効にできます。詳細については、「既存のデータベースで RDS Optimized Writes を有効にする」を参照してください。
RDS Optimized Writes を使用するように設定されている RDS for MySQL データベースを、この機能をサポートしていない DB インスタンスクラスに移行した場合、RDS はそのデータベースの RDS Optimized Writes を自動的に無効にします。
RDS Optimized Writes を無効にすると、データベースは MySQL の二重書き込みバッファを使用します。
RDS for MySQL データベースが RDS Optimized Writes を使用しているかどうかを判断するには、データベースの innodb_doublewrite
パラメータの現在の値を表示します。データベースが RDS Optimized Writes を使用している場合、このパラメータは FALSE
(0
) に設定されています。
RDS Optimized Writes の使用
RDS コンソール、AWS CLI、または RDS API を使用して RDS for MySQL データベースを作成すると、RDS Optimized Writes を有効にできます。RDS Optimized Writes は、データベース作成時に、次の条件に両方当てはまる場合、自動的に有効になります。
-
RDS Optimized Writes をサポートする DB エンジンのバージョンと DB インスタンスクラスを指定します。
-
RDS Optimized Writes は、RDS for MySQL バージョン 8.0.30 以降でサポートされています。RDS for MySQL のバージョンの詳細については、「Amazon RDS での MySQL のバージョン」を参照してください。
-
RDS Optimized Writes は、次の DB インスタンスクラスを使用する RDS for MySQL データベースでサポートされています。
-
db.m7g
-
db.m6g
-
db.m6gd
-
db.m6i
-
db.m5
-
db.m5d
-
db.r7g
-
db.r6g
-
db.r6gd
-
db.r6i
-
db.r5
-
db.r5b
-
db.r5d
-
db.x2idn
-
db.x2iedn
DB インスタンスクラスの詳細については、「 DB インスタンスクラス」を参照してください。
DB インスタンスクラスの可用性は AWS リージョン によって異なります。DB インスタンスクラスが特定の AWS リージョン でサポートされているかどうかを判断するには、「AWS リージョン での DB インスタンスクラスのサポートを決定する」を参照してください。
データベースを RDS Optimized Writes をサポートする DB インスタンスクラスにアップグレードするには、ブルー/グリーンデプロイを作成できます。詳細については、「既存のデータベースで RDS Optimized Writes を有効にする」を参照してください。
-
-
-
データベースに関連付けられたパラメータグループでは、
rds.optimized_writes
パラメータがAUTO
に設定されます。デフォルトのパラメータグループでは、このパラメータは常にAUTO
に設定されます。
RDS Optimized Writes をサポートする DB エンジンバージョンと DB インスタンスクラスを使用し、この機能は使用しない場合は、データベースの作成時に、カスタムパラメータグループを指定します。このパラメータグループで、rds.optimized_writes
パラメータを OFF
に設定します。その後、データベースで RDS Optimized Writes を使用するには、パラメータを AUTO
に設定して有効にすることができます。カスタムパラメータグループの作成とパラメータの設定については、「Amazon RDS のパラメータグループ」を参照してください。
DB インスタンスの作成については、「Amazon RDS DB インスタンスの作成」を参照してください。
RDS コンソールを使用して RDS for MySQL データベースを作成すると、RDS Optimized Writes をサポートする DB エンジンバージョンと DB インスタンスクラスをフィルタリングできます。フィルタリングを有効にすると、利用可能な DB エンジンのバージョンと DB インスタンスクラスから選択できるようになります。
RDS Optimized Writes をサポートする DB エンジンバージョンを選択するには、エンジンバージョンをサポートする RDS for MySQL DB のエンジンバージョンをフィルタリングして、バージョンを選択します。
[インスタンスの設定] セクションで、RDS Optimized Writes をサポートする DB インスタンスクラスをフィルタリングして、DB インスタンスクラスを選択します。
これらの選択を行った後、要件を満たす他の設定を選択し、コンソールで RDS for MySQL データベースの作成を完了します。
AWS CLI を使用して DB インスタンスを作成するには、create-db-instance コマンドを使用します。--engine-version
と --db-instance-class
の値が RDS Optimized Writes をサポートしていることを確認してください。また、DB インスタンスに関連付けられたパラメータグループでは、rds.optimized_writes
パラメータがAUTO
に設定されていることを確認します。この例では、デフォルトパラメータグループを DB インスタンスに関連付けます。
例 RDS Optimized Writes を使用する DB インスタンスの作成
Linux、macOS、Unix の場合:
aws rds create-db-instance \ --db-instance-identifier
mydbinstance
\ --engine mysql \ --engine-version8.0.30
\ --db-instance-classdb.r5b.large
\ --manage-master-user-password \ --master-usernameadmin
\ --allocated-storage200
Windows の場合:
aws rds create-db-instance ^ --db-instance-identifier
mydbinstance
^ --engine mysql ^ --engine-version8.0.30
^ --db-instance-classdb.r5b.large
^ --manage-master-user-password ^ --master-usernameadmin
^ --allocated-storage200
CreateDBInstance オペレーションを使用して、DB インスタンスを作成できます。このオペレーションを使用する際は、EngineVersion
と DBInstanceClass
の値が RDS Optimized Writes をサポートしていることを確認してください。また、DB インスタンスに関連付けられたパラメータグループでは、rds.optimized_writes
パラメータがAUTO
に設定されていることを確認します。
既存のデータベースで RDS Optimized Writes を有効にする
RDS Optimized Writes を有効にするために既存の RDS for MySQL データベースを変更するには、サポート対象の DB エンジンバージョンと DB インスタンスクラスでデータベースを作成する必要があります。さらに、必要な基盤となるファイルシステム設定は、リリース前に作成されたデータベースの設定と互換性がないため、データベースは 2022 年 11 月 27 日に RDS Optimized Writes がリリースされた後に作成されたものでなければなりません。これらの条件が満たされている場合は、rds.optimized_writes
パラメータを AUTO
に設定して RDS Optimized Writes を有効にできます。
データベースが、サポートされているエンジンバージョン、インスタンスクラス、またはファイルシステム設定で作成されていない場合、RDS ブルー/グリーンデプロイを使用して、サポートされている設定に移行できます。ブルー/グリーンデプロイを作成して、以下の操作を行います。
-
[グリーンデータベースで Optimized Writes を有効にする] を選択し、RDS Optimized Writes をサポートするエンジンバージョンと DB インスタンスクラスを指定します。サポートされているエンジンバージョンとインスタンスクラスのリストについては、「RDS Optimized Writes の使用」を参照してください。
-
[ストレージ] で、[ストレージファイルシステム設定のアップグレード] を選択します。このオプションは、データベースを互換性のある基本ファイルシステム設定にアップグレードします。
ブルー/グリーンデプロイを作成すると、rds.optimized_writes
パラメータが AUTO
に設定されている場合、RDS Optimized Writes がグリーン環境で自動的に有効になります。その後、ブルー/グリーンデプロイを切り替えて、グリーン環境を新しい本番環境に昇格できます。
詳細については、「ブルー/グリーンデプロイの作成」を参照してください。
RDS Optimized Writes についての制限事項
RDS for MySQL データベースをスナップショットから復元する場合、次の条件がすべて当てはまる場合のみ、データベースの RDS Optimized Writes を有効にできます。
-
スナップショットが RDS Optimized Writes をサポートするデータベースから作成された。
-
スナップショットは、RDS Optimized Writes のリリース後に作成されたデータベースから作成されました。
-
スナップショットが RDS Optimized Writes をサポートするデータベースに復元された。
-
復元されたデータベースは、
AUTO
に設定されたrds.optimized_writes
パラメータに関連付けられています。