Amazon Web Services ブログ
NEW – Amazon RDS Optimized Reads および Optimized Writes
2009 年に、私は「Introducing Amazon RDS – The Amazon Relational Database Service」(Amazon RDS のご紹介 – Amazon Relational Database Service) という記事を書き、次のことをお伝えしました。
RDS を使用すると、クラウドでのリレーショナルデータベースの設定、運用、スケールがより容易になります。インフラストラクチャのプロビジョニング、ソフトウェアのメンテナンス、一般的なデータベース管理タスクを気にすることなく、データベースに直接アクセスできます。
そのリリース以降、当社はお客様がこれらのすべての問題を回避するのをサポートするために最善を尽くし続けるとともに、RDS の費用対効果をさらに高めることができるように努めてきました。例えば、当社は最近、料金パフォーマンスを最大 52% 向上させた Graviton2 DB インスタンスと、料金パフォーマンスを最大 33% 向上させ、トランザクションコミットレイテンシーが 2 分の 1 になった新しいマルチ AZ 配置オプションをリリースしました。
本日は、Amazon RDS for MySQL のワークロードを高速化する 2 つの新機能をご紹介します。
Amazon RDS Optimized Reads は、MySQL によって生成された一時テーブルを、ホストサーバーに物理的に接続されている NVMe ベースの SSD ブロックストレージに配置することで、クエリ処理を高速化します。ソート、ハッシュ集計、高負荷結合、共通テーブル式 (CTE) などの一時テーブルを使用するクエリは、Optimized Reads を使用することで最大 50% 速く実行できます。
Amazon RDS Optimized Writes は、追加料金なしで、かつ、同じレベルのプロビジョンド IOPS で、書き込みトランザクションのスループットを最大で 2 倍に向上させます。Optimized Writes は、大量の同時実行トランザクションを生成する書き込み量の多いワークロードに最適です。これには、デジタル決済、金融取引プラットフォーム、オンラインゲームが含まれます。
Amazon RDS Optimized Reads
Optimized Reads なしの Amazon RDS for MySQL は、Amazon Elastic Block Store (Amazon EBS) ボリュームに一時テーブルを配置します。Optimized Reads は、一時オブジェクトに対するオペレーションを EBS から r5d、m5d、r6gd、m6gd インスタンスにアタッチされたインスタンスストアにオフロードします。その結果、EBS ボリュームは、永続データの読み取りと書き込みだけでなく、フラッシュや挿入バッファマージなどのバックグラウンドオペレーションにもより効率的に使用できます。この効率性の向上は (もちろん) いつでも好ましいですが、次のような特定のユースケースでは特に有益です。
- 複雑なテーブル式、派生テーブル、グループ化オペレーションを含む分析クエリ。
- アプリケーション向けの最適化されていないクエリを処理するリードレプリカ。
- 必ずしも適切なインデックスを使用できない場合がある、
GROUP BY
やORDER BY
などの複雑なオペレーションを伴うオンデマンドまたは動的レポートクエリ。 - 内部の一時テーブルを使用するその他のワークロード。
MySQL のステータス変数である created_tmp_files
をモニタリングして、一時テーブルの作成レートを観察できます。
インスタンスで使用可能なインスタンスストレージの量は、インスタンスファミリーとサイズによって異なります。ガイドを次に示します。
インスタンスファミリー | 最小ストレージ |
最大ストレージ |
m5d | 75 GB | 3.6 TB |
m6gd | 237 GB | 3.8 TB |
r5d | 75 GB | 3.6 TB |
r6gd | 59 GB | 3.8 TB |
Optimized Reads の使用
この新機能を利用するには、MySQL エンジンのバージョン 8.0.28 以降を選択し、上記のインスタンスタイプのいずれかで Amazon RDS for MySQL を起動します。
FreeLocalStorage、ReadIOPSLocalStorage、WriteIOPSLocalStorage などの新しい CloudWatch メトリクスを監視することで、インスタンスストレージの使用をモニタリングできます (新規および既存のメトリクスの完全なリストについては、「ユーザーガイド」を参照してください)。
Optimized Reads は、対象となるデータベースインスタンスタイプが利用可能なすべての AWS リージョンでご利用いただけます。
Amazon RDS Optimized Writes
デフォルトでは、MySQL はディスク上の二重書き込みバッファを使用します。このバッファは、メモリと最終的なディスク上のストレージとの間の途中停止場所として機能します。バッファの各ページは 16 KiB ですが、最終的なディスク上のストレージには 4 KiB のチャンク単位で書き込まれます。この追加ステップはデータの完全性を維持しますが、I/O 帯域幅を追加で消費します。前述したような書き込み量の多いワークロードを実行する場合、パフォーマンスおよびスループットの要件を満たすために、追加の IOPS をプロビジョニングする必要がある場合があります。
Optimized Writes では、統一された 16 KiB のデータベースページ、ファイルシステムブロック、オペレーティングシステムページを使用し、それらをアトミックに (オールオアナッシングで) ストレージに書き込みます。その結果、前述のパフォーマンスが最大 2 倍向上します。
Optimized Writes の使用
Optimized Writes を利用するには、MySQL 8.0 の最新バージョンの db.r5b または db.r6i インスタンスで、最初から新しい DB インスタンスを作成する必要があります。
この設定は DB スナップショットの形式に影響し、次の 2 つの重要な結果が伴います。
- Optimized Writes を有効にするために、最適化されていない既存のスナップショットを、最適化された新しいスナップショットに復元することはできません。
- 最適化を有効にして作成されたスナップショットを復元すると、新しいインスタンスで Optimized Writes が有効になります。
Optimized Writes をサポートしないインスタンスタイプにスケールする場合、Amazon RDS はフォールバックとしてインスタンスで MySQL の二重書き込みモードを有効にします。Optimized Writes をサポートしていないインスタンスから Optimized Writes をサポートしているインスタンスにスケールインすると、Amazon RDS は MySQL を二重書き込みモードで起動し、復旧とログ再生が完了するのを待ってから、二重書き込みを無効にして MySQL を再起動します。
Optimized Write は、米国東部 (オハイオ、バージニア北部)、米国西部 (オレゴン)、アジアパシフィック (シンガポール、東京)、欧州 (フランクフルト、アイルランド、パリ) の各リージョンでご利用いただけるようになりました。今すぐご活用ください!
– Jeff;
原文はこちらです。