メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Amazon RDS のストレージ

Amazon RDS のほとんどは、データベースとログのストレージとして Amazon Elastic Block Store (Amazon EBS) ボリュームを使用します。例外は、専有のストレージシステムを使用する Amazon Aurora です。要求されるストレージの量によって、Amazon RDS は自動的に複数の Amazon EBS ボリューム全体をストライプして、IOPS パフォーマンスを向上させます。Amazon RDS では、3 種類のストレージが提供され、ストレージとパフォーマンスに関する幅広いオプションが用意されています。

注記

Amazon RDS の料金については、Amazon RDS の製品ページをご覧ください。

Amazon RDS ストレージの種類

Amazon RDS のストレージには、汎用 (SSD)、プロビジョンド IOPS (1 秒あたりの入力/出力オペレーション)、およびマグネティックの 3 つの種類があります。これらはパフォーマンス特性と料金が異なるため、データベースのワークロードに応じてストレージのパフォーマンスとコストを調整できます。プロビジョンド IOPS および汎用 (SSD) ストレージタイプを使用した場合、最大 6 TB のストレージ で MySQL、MariaDB、PostgreSQL、Oracle RDS の各 DB インスタンス、最大 16 TB のストレージで Microsoft SQL Server RDS の DB インスタンスを作成できます。

  • 汎用 (SSD) – gp2 とも呼ばれる汎用 (SSD) ボリュームは、さまざまなワークロードに対応できるコスト効率の高いストレージとして使用できます。これらのボリュームでは、レイテンシーは 1 桁台のミリ秒であり、長時間 3,000 IOPS にバーストできます。最小 100 IOPS (33.33 GiB 以下) から最大 10,000 IOPS (3,334 GiB 以上) まで、ベースラインパフォーマンスは 3 IOPS/GiB (ボリュームサイズ) の割合で線形に拡大します。このストレージタイプは、小規模から中規模のデータベースに最適です。

    ストレージサイズの範囲を含む汎用 (SSD) ストレージの詳細については、「汎用 (SSD) ストレージ」を参照してください。

  • Provisioned IOPS – Provisioned IOPS ストレージは、ランダムアクセス I/O スループットにおけるストレージのパフォーマンスと整合性が重視される大量の I/O を伴うワークロード (特にデータベースワークロード) の要件を満たすように設計されています。割り当てるストレージ容量を指定してから、必要な専用 IOPS の容量を指定します。Amazon RDS は、1 年間の 99.9 パーセントで、10 パーセント以内のプロビジョンド IOPS パフォーマンスを実現します。

    ストレージサイズの範囲を含むプロビジョンド IOPS ストレージの詳細については、「Amazon RDS Provisioned IOPS ストレージによるパフォーマンスの向上」を参照してください。

  • マグネティック – また、Amazon RDS は下位互換性のためにマグネティックストレージをサポートしています。新しいストレージが必要な場合は、汎用 (SSD) またはプロビジョンド IOPS を使うことをお勧めします。マグネティックストレージでの DB インスタンスのストレージ量の上限は、他のストレージタイプより少なくなります。

インスタンスの構成、I/O 特性、ワークロードのデマンドなど、Amazon EBS ボリュームのパフォーマンスに影響を与える可能性がある要因がいくつか存在します。プロビジョンド IOPS ボリュームをフル活用する方法については、「Amazon EBS ボリュームのパフォーマンス」を参照してください。

既存の MySQL、MariaDB、PostgreSQL、および Oracle DB インスタンスについては、ストレージをスケールアップすると、何らかの I/O キャパシティの向上が認められる可能性があります。SQL Server の DB インスタンスのストレージ容量やストレージタイプを変更することはできません。

パフォーマンスメトリクス

Amazon RDS では、DB インスタンスの動作を特定するためにいくつかのメトリクスを利用できます。RDS コンソールのメトリクスを表示するには、DB インスタンスを選択し、[Show Monitoring] をクリックします。また、Amazon CloudWatch を使用して、これらのメトリクスをモニタリングすることもできます。詳細については、「DB インスタンスのメトリクスの表示」を参照してください。拡張モニタリングは、より詳細な I/O メトリクスを提供します。詳細については、「拡張モニタリング」を参照してください。

  • IOPS – 1 秒あたりの I/O オペレーションの数。このメトリクスは、指定された時間間隔の平均 IOPS として報告されます。Amazon RDS は、1 分間隔で読み込みおよび書き込み IOPS を個別に報告します。合計 IOPS は、読み取りおよび書き込み IOPS の合計です。IOPS の典型的な値は、1 秒あたり 0 から数万の範囲内です。

  • レイテンシー – I/O リクエスト送信から完了までの経過時間。このメトリクスは、指定された時間間隔の平均レイテンシーとして報告されます。Amazon RDS は、1 分間隔の読み込みおよび書き込みレイテンシーを秒単位で個別に報告します。レイテンシーの値は通常ミリ秒 (ms) 単位です。たとえば、Amazon RDS は 2 ms を 0.002 秒として報告します。

  • スループット – ディスクへ、またはディスクから転送される 1 秒あたりバイト数。このメトリクスは、指定された時間間隔の平均スループットとして報告されます。Amazon RDS は、1 分間隔の読み込みおよび書き込みスループットを 1 秒あたりのメガバイト (MB/秒) 単位で報告します。スループットの典型的な値は、0 から I/O チャネルの最大帯域幅までの範囲内です。

  • キューの深度 – サービスされるのを待つキュー内の I/O リクエスト数。アプリケーションによって送信されても、デバイスが他の I/O リクエストの処理でビジー状態のため、デバイスに送信されていない I/O リクエストです。キューでの待ち時間は、レイテンシーとサービス時間 (メトリクスとしては提供されません) のコンポーネントです。このメトリクスは、指定された時間間隔の平均キュー深度として報告されます。Amazon RDS は、1 分間隔のキューの深度を報告します。キューの深度の典型的な値は、0 から数百までの範囲です。

Amazon RDS ストレージに関する情報

次に、Amazon RDS のストレージに関して知っておくべき重要事項を示します。

  • 最大のチャネル帯域幅は DB インスタンスのクラスによって異なります。

  • DB インスタンスに割り当てられたストレージを減らすことはできません。

  • プロビジョンド IOPS は、最大 256 KB までの I/O サイズに対応しますが、通常、ほとんどのデータベースはそれほど大きな I/O を使うことはありません。32 KB 未満の I/O リクエストは、1 つの I/O として扱われます。たとえば、1,000 件の 16 KB の I/O リクエストは、1,000 件の 32 KB のリクエストと同様に扱われます。32 KB を超える I/O リクエストの消費は、1 つの I/O リクエストより多くなります。Provisioned IOPS 消費は、サイズが 32 KB を超える I/O リクエストの線形関数です。たとえば、48 KB の I/O リクエストは、I/O リクエスト 1.5 件分のストレージ容量、64 KB の I/O リクエストは I/O リクエスト 2 件分、のように消費します。プロビジョンド IOPS の詳細については、「Amazon RDS Provisioned IOPS ストレージによるパフォーマンスの向上」を参照してください。

    I/O サイズはメトリクスによって報告される IOPS 値には影響しません。メトリクスは一定期間の I/O 数のみに基づいています。つまり、I/O サイズが 32 KB より大きい場合、指定より少ない I/O で Provisioned IOPS がすべて消費される可能性もあります。たとえば、5,000 IOPS にプロビジョニングされたシステムでは、64 KB の I/O では最大 2,500 IOPS、128 KB の I/O では 1,250 IOPS を達成できます。

    マグネティックストレージでは、I/O キャパシティーのプロビジョニングが行われないため、I/O はすべてサイズに関係なく 1 つの I/O としてカウントされます。汎用ストレージでは、ボリュームのサイズに基づいて I/O キャパシティーのプロビジョニングが行われます。汎用ストレージスループットの詳細については、「汎用 (SSD) ボリューム」を参照してください。

  • DB インスタンスは Amazon RDS が管理するため、このインスタンスのオーバーヘッド容量を予約します。予約するストレージの量は、DB インスタンスクラスやその他の要因によって異なりますが、この予約容量は総容量の 1〜2 パーセント程度にします。

  • Provisioned IOPS では、IOPS を指定することにより I/O キャパシティを予約する方法が提供されます。他のシステムキャパシティ属性と同様に、負荷時の最大スループットは最初に使用されるリソースによって制限されます。そのリソースは、IOPS、チャネル帯域幅、CPU、メモリ、またはデータベースの内部リソースのいずれかである場合があります。

ストレージのパフォーマンスに影響するその他の要因

次のシステム関連アクティビティは、すべて I/O キャパシティを消費するため、進行中はデータベースインスタンスのパフォーマンスが低下する可能性があります。

  • DB スナップショットの作成

  • 夜間バックアップ

  • マルチ AZ ピアの作成

  • リードレプリカの作成

  • ストレージのスケーリング

システムリソースにより DB インスタンスのスループットが制限されることもありますが、ボトルネックとして他の理由も挙げられます。以下の状況が見られる場合、原因はデータベースにある可能性があります。

  • チャネルスループットの限界に達していない場合

  • キューの深度は一貫して低い場合

  • CPU 使用率が 80% 未満の場合

  • 使用可能な空きメモリがある場合

  • スワップアクティビティがない場合

  • 大量の空きディスク容量がある場合

  • アプリケーションに多数のスレッドがあり、それらがすべてデータベースが対応できる限り頻繁にトランザクションを送信している状態でも、明らかに未使用の I/O キャパシティがあります。

限界またはほぼ限界に達しているシステムリソースが 1 つもないにもかかわらず、スレッドを追加してもデータベースのトランザクションレートが増加しない場合は、データベース内の競合がボトルネックになっている可能性が高くなります。最も一般的な形は、行ロックとインデックスページロックの競合ですが、それ以外にも多くの可能性があります。このような状況では、データベースパフォーマンス調整のエキスパートに助言を求める必要があります。

ストレージの追加とストレージタイプの変更

既存の MySQL、MariaDB、PostgreSQL、および Oracle DB インスタンスについては、ストレージをスケールアップすると、何らかの I/O キャパシティの向上が認められる可能性があります。Windows Server 環境にアタッチされるストライプ化ストレージの伸張性の制約が原因で、SQL Server DB インスタンスのストレージ容量またはストレージのタイプを変更できないことに注意してください。

DB インスタンスが追加のストレージを使用するように変更したり、また、別のストレージタイプに変換したりすることができます。ストレージの追加または他の種類のストレージへの変換は時間がかかる場合があり、DB インスタンスのパフォーマンスが低下する可能性があるため、これらの変更をいつ実施するかを計画する必要があります。

ストレージの追加中も DB インスタンスは読み書きできますが、処理が完了するまではパフォーマンスが低下する可能性があります。ストレージの追加には数時間かかる場合があります。所要時間は、データベースの負荷、ストレージのサイズやタイプ、プロビジョンド IOPS の値 (ある場合) など、いくつかの要因に基づいて異なります。一般的なストレージ拡張にかかる時間は 24 時間以内ですが、場合によっては数日かかることもあります。拡張中も、DB インスタンスを使用できますが、パフォーマンスが低下する可能性があります。ストレージの追加中は、夜間バックアップが停止され、変更、再起動、削除、リードレプリカの作成、DB スナップショットの作成など、他の Amazon RDS 操作も実行できません。

マグネティックストレージと汎用 (SSD) ストレージとの間でストレージ変換が発生すると、汎用 (SSD) ストレージに割り当てられた初期の 5,400,000 I/O クレジット (3,000 IOPS x 30 分) が枯渇する可能性があります。このようなストレージ変換では、データの最初の 82 GB は約 3,000 IOPS で変換され、残りのデータは、割り当てられた汎用 (SSD) ストレージのベースパフォーマンスレート (1 GB あたり 100 IOPS) で変換されます。この結果、変換に長い時間がかかる場合があります。汎用 (SSD) ストレージをさらにプロビジョニングして、ベース I/O パフォーマンスレートを改善し、変換時間を短縮することができます。ただし、一度割り当てたストレージサイズを縮小することはできません。

汎用 (SSD) ストレージ

汎用 (SSD) ストレージは、小規模から中規模のデータベースワークロードに最適な、コスト効果に優れたストレージです。汎用 (SSD) DB インスタンスのストレージサイズの範囲を以下に示します。

  • MySQL、MariaDB、および PostgreSQL DB インスタンス: 5 GB–6 TB

  • SQL Server: Enterprise および Standard エディション: 200 GB–16 TB

  • SQL Server Web および Express エディション: 20 GB–16 TB

  • Oracle DB インスタンス: 10 GB–6 TB

汎用 (SSD) ストレージでは、レイテンシーは 1 桁台のミリ秒であり、長時間 3,000 IOPS にバーストできます。最小 100 IOPS (33.33 GiB 以下) から最大 10,000 IOPS (3,334 GiB 以上) まで、ベースラインパフォーマンスは 3 IOPS/GiB (ボリュームサイズ) の割合で線形に拡大します。

高スループットのワークロードに対して汎用 (SSD) ストレージのプロビジョニングが 100 GB 未満の場合、初期の汎用 (SSD) I/O クレジットバランスが枯渇すると、レイテンシーが大きくなることがあります。

I/O クレジットおよびバーストパフォーマンス

汎用 (SSD) ストレージのパフォーマンスは、ボリュームサイズの影響を受けます。ボリュームサイズによって、ボリュームのベースパフォーマンスレベルや I/O クレジットを取得する速さが決まります。ボリュームサイズが大きいほどベースパフォーマンスレベルが高くなり、I/O クレジットの取得速度も速くなります。I/O クレジットとは、ベースレベルのパフォーマンスでは不十分な場合、大量の I/O をバーストする際に汎用 (SSD) ストレージで使用できる帯域幅を表します。ストレージが I/O に対して保持しているクレジットが多いほど、ベースパフォーマンスレベルを超えたバーストには時間がかかりますが、より高いパフォーマンスが必要な場合はボリュームのパフォーマンスが向上します。

汎用 (SSD) ストレージを使用した場合、DB インスタンスは、初期 I/O クレジットバランス (5,400,000 I/O クレジット) を受け取ります。これは、30 分間で 3,000 IOPS というバーストパフォーマンスを持続するには十分な数のクレジットです。この初期クレジットバランスは、ブートボリュームでの高速な初期起動サイクル、および他のアプリケーションでの優れたブートストラップエクスペリエンスを実現するために設計されました。ボリュームは、ボリュームサイズの 1 GB あたり 3 IOPS というベースラインパフォーマンスレートで、I/O クレジットを取得します。たとえば、100 GB の SSD ボリュームではベースラインパフォーマンスは 300 IOPS になります。

ベースパフォーマンスの I/O レベルよりも高いレベルがストレージで必要となる場合は、クレジットバランスの I/O クレジットを使用して、必要なパフォーマンスレベルまでバーストします(最大レベルは 3,000 IOPS です)。1,000 GB を超えるストレージのベースパフォーマンスは最大バーストパフォーマンス以上になります。このため、I/O クレジットバランスは消耗することがなく、永続的にバーストできます。ストレージで使用される I/O クレジットが毎秒取得される I/O クレジットよりも少ない場合、未使用の I/O クレジットは I/O クレジットバランスに追加されます。汎用 (SSD) ストレージを使用した DB インスタンスの最大 I/O クレジットバランスは、初期クレジットバランス (5,400,000 I/O クレジット) と同じです。

ストレージがすべての I/O クレジットバランスを使用した場合、I/O デマンドがベースレベルを下回り、未使用のクレジットが I/O クレジットバランスに追加されるまで、最大パフォーマンスはベースパフォーマンスレベル (ストレージがクレジットを取得するレート) のままになります。ストレージが大きくなると、ベースパフォーマンスが高くなり、クレジットバランスがより速く補充されるようになります。

注記

マグネティックストレージと汎用 (SSD) ストレージとの間でストレージ変換が発生すると、汎用 (SSD) ストレージに割り当てられた初期の 5,400,000 I/O クレジット (3,000 IOPS x 30 分) が枯渇する可能性があります。このようなストレージの変換を実行すると、データの最初の 82 GB は約 3,000 IOPS で変換され、残りのデータは、割り当てられた汎用 (SSD) ストレージの 1 GB あたり 100 IOPS というベースパフォーマンスレートで変換されます。この結果、変換に長い時間がかかる場合があります。汎用 (SSD) ストレージをさらにプロビジョニングして、ベース I/O パフォーマンスレートを改善し、変換時間を向上させることができます。ただし、ストレージのサイズは、一度割り当てたら縮小することはできません。

次の表に、いくつかのストレージサイズとストレージに関連するベースパフォーマンス (I/O クレジットを取得するレート) を示します。また、最大のパフォーマンスレベルである 3,000 IOPS (完全なクレジットバランスで開始された時点のレベル) でのバースト期間、および空のクレジットバランスをストレージが再補充する際にかかる秒数も示します。

ストレージサイズ (GB) ベースパフォーマンス (IOPS) 3,000 IOPS での最大のバースト期間 (秒数) 空のクレジットバランスを補充する秒数
1 100 1,862 54,000
100 300 2,000 18,000
250 750 2,400 7,200
500 1,500 3,600 3,600
750 2,250 7,200 2,400
1,000 3,000 無制限 該当なし

ストレージのバースト期間は、ストレージのサイズ、必要なバースト IOPS、およびバーストが開始された時点のクレジットバランスによって異なります。この関係は次の式で示されます。

Copy
(Credit balance) Burst duration =  ------------------------------------ (Burst IOPS) - 3(Storage size in GB)

ストレージのパフォーマンスがベースレベルに頻繁に制限されることが確認される場合は (空の I/O クレジットバランスが原因です)、より大きな (ベースパフォーマンスレベルが高い) 汎用 (SSD) ストレージの使用を考慮するか、持続的な IOPS パフォーマンスが必要となるワークロードに適した Provisioned IOPS ストレージに切り替えることを考慮してください。

安定した状態の I/O 要件があるワークロードの場合、100 GB 未満の汎用 (SSD) ストレージをプロビジョニングする方が I/O バーストクレジットバランスを使い切った場合、レイテンシーが大きくなることがあります。

Amazon RDS Provisioned IOPS ストレージによるパフォーマンスの向上

高速で一貫した I/O 性能を必要とするすべての本稼働アプリケーションに、プロビジョンド IOPS (input/output operations per second) ストレージをお勧めします。Provisioned IOPS ストレージは、高速で一貫した予測可能なスループットを実現するストレージタイプです。プロビジョンド IOPS ストレージは、一貫したパフォーマンスを要件とするオンライントランザクション処理 (OLTP) ワークロード向けに最適化されています。Provisioned IOPS はパフォーマンスの調整に役立ちます。

DB インスタンスの作成時に、IOPS レートとストレージ領域割り当てを指定します。Amazon RDS は、DB インスタンスの存続期間中、または変更されるまで、その IOPS レートとストレージをプロビジョニングします。

注記

実際の IOPS は、データベースのワークロード、DB インスタンスのサイズ、および DB エンジンで使用できるページサイズとチャネル帯域幅に応じて、指定した値とは異なることがあります。詳細については、「実際の IOPS レートに影響を与える要因」を参照してください。

次の表は、各データベースエンジンの IOPS とストレージの範囲を示しています。

プロビジョンド IOPS の範囲 ストレージの範囲 IOPS とストレージ (GB) の比率の範囲
MariaDB 1000–30,000 IOPS 100 GB–6 TB 3:1–10:1
Microsoft SQL Server, Enterprise および Standard エディション 1000–20,000 IOPS 200 GB–16 TB 1:1–50:1
Microsoft SQL Server、Web および Express エディション 1000–20,000 IOPS 100 GB–16 TB 1:1–50:1
MySQL 1000–30,000 IOPS 100 GB–6 TB 3:1–10:1
Oracle 1000–30,000 IOPS 100 GB–6 TB 3:1–10:1
PostgreSQL 1000–30,000 IOPS 100 GB–6 TB 3:1–10:1

リクエストした IOPS レートと割り当てストレージ量との比率は重要で、データベースエンジンにより異なります。たとえば、Oracle では、3:1 から 10:1 の間の比率になります。最初は、1,000 IOPS と 200 GB のストレージ (比率は 5:1) で Oracle DB インスタンスをプロビジョニングすることができます。その後、200 GB のストレージで最大 2,000 IOPS (10:1 の比率) までスケールアップできます。6 TB (6,000 GB) のストレージで Oracle DB インスタンスの最大である 30,000 IOPS (5:1 の比率) までスケールアップできます。

プロビジョンド IOPS ストレージを使用するように、既存の Oracle、MySQL、または MariaDB DB インスタンスを変更できます。また、プロビジョンド IOPS ストレージの設定を変更できます。

マルチ AZ、リードレプリカ、スナップショット、VPC、DB インスタンスクラスでプロビジョンド IOPS ストレージを使用する

本稼働 OLTP ユースケースの場合、耐障害性を強化するためにマルチ AZ 配置を使用し、高速で予測可能なパフォーマンスのためにプロビジョンド IOPS ストレージを使用することをお勧めします。マルチ AZ 配置に加えて、プロビジョンド IOPS ストレージは次の機能を補完します。

  • Amazon VPC のネットワーク隔離とセキュリティ強化。

  • リードレプリカ。ストレージの種類は、リードレプリカとマスター DB インスタンスとで独立しています。たとえば、マスター DB インスタンスでマグネティックストレージを使用している場合に、Provisioned IOPS ストレージを使用するリードレプリカを追加でき、その逆も同様です。Provisioned IOPS ストレージを使用するマスター DB インスタンスでマグネティックストレージのリードレプリカを使用する場合、リードレプリカのパフォーマンスが、マスター DB インスタンスとリードレプリカの両方で Provisioned IOPS ストレージを使用する設定の場合と大きく異なることがあります。

  • DB スナップショット。DB インスタンスで Provisioned IOPS ストレージを使用している場合、ターゲット DB インスタンスでマグネティックストレージと Provisioned IOPS ストレージのどちらを使用しているかに関係なく、DB スナップショットを使用して、同一設定の DB インスタンスを復元できます。DB インスタンスでマグネティックストレージを使用している場合、DB スナップショットを使用して復元できるのは、マグネティックストレージを使用する DB インスタンスのみです。

  • プロビジョンド IOPS ストレージは、どの DB インスタンスクラスでも使用できます。ただし、より小さい DB インスタンスクラスは、プロビジョンド IOPS ストレージを一貫して最大限に利用することができません。最高のパフォーマンスを得るには、プロビジョンド IOPS ストレージ向けに最適化された DB インスタンスタイプを使用することをお勧めします。

プロビジョンド IOPS ストレージのコスト

プロビジョンド IOPS ストレージでは使用するリソースが予約されているため、その月に実際に使用したかどうかに関係なく、予約されたリソースに応じて課金されます。プロビジョンド IOPS ストレージを使用すると、毎月の Amazon RDS I/O 料金はかかりません。消費した I/O 分のみを支払いたい場合は、マグネティックストレージを使用する DB インスタンスの方が適している可能性があります。Amazon RDS の料金については、Amazon RDS の製品ページをご覧ください。

Amazon RDS プロビジョンド IOPS を最大限に活用する

Provisioned IOPS ストレージを使用すると、システムで同時に処理できる I/O リクエストの数が増加します。同時処理数が増加すると、I/O リクエストがキューにとどまる時間が減るため、レイテンシーが減少します。レイテンシーが減少すると、データベースのコミット処理が高速になり、その結果、応答時間が短縮され、データベースのスループットが向上します。

たとえば、10,000 プロビジョンド IOPS でプロビジョニングされた、読み取り時に 105 Mbps スループットというチャネルの上限で一貫して実行される負荷の高い OLTP データベースがあるとします。ワークロードのバランスが完全ではないため、未使用の書き込みチャネル帯域幅が存在します。インスタンスが消費するのは 10,000 IOPS 未満ですが、それでも容量を 20,000 プロビジョンド IOPS に増やすと恩恵を受けることができます。

Provisioned IOPS 容量を 10,000 から 20,000 に増やすと、同時 I/O 用のシステムの容量が倍になります。同時処理数が増加するとレイテンシーが減少し、そのためトランザクション処理が高速に完了して、データベーストランザクションレートが増加します。読み取りレイテンシーと書き込みレイテンシーの向上幅は異なり、最初に制約を受けるリソースに基づいてシステムは新しい平衡状態で落ち着きます。

データベーストランザクションレートがはるかに高くなっている一方で、プロビジョンド IOPS の消費がこのような状況で実際に減少する可能性もあります。たとえば、書き込みリクエストの減少に書き込みスループットの向上が伴うことがあります。これは、データベースがグループコミットを効果的に利用していることを示す優れた指標となります。書き込みスループットが増えて、書き込み IOPS が同じ場合は、ログ書き込みが大きくなったが、まだ 256 KB 未満であることを意味します。書き込みスループットが増えて、書き込み I/O が減った場合は、ログ書き込みが大きくなり、平均 32 KB を超えていることを意味します。このような I/O リクエストは、Provisioned IOPS 容量の複数の I/O を消費するためです。

AWS CLI および Amazon RDS API におけるプロビジョンド IOPS ストレージのサポート

AWS CLI は、次のコマンドでプロビジョンド IOPS ストレージをサポートします。

  • create-db-snapshot – – 出力が IOPS 値を示します。

  • create-db-instance – 入力パラメータに iops があり、出力で IOPS レートを示します。

  • modify-db-instance – 入力パラメータに iops があり、出力で IOPS レートを示します。

  • restore-db-instance-from-db-snapshot – 入力パラメータ iops が含まれており、出力が現在の IOPS レートを示します。[Apply Immediately] が指定されていた場合、出力では保留中の IOPS レートも示されます。

  • restore-db-instance-to-point-in-time – 入力パラメータに iops があり、出力で IOPS レートを示します。

  • create-db-instance-read-replica – 入力パラメータに iops があり、出力で IOPS レートを示します。

Amazon RDS API は、次のアクションでプロビジョンド IOPS ストレージをサポートします。

  • CreateDBInstance – 入力パラメータに iops があり、出力で IOPS レートを示します。

  • CreateDBInstanceReadReplica – 入力パラメータに iops があり、出力で IOPS レートを示します。

  • CreateDBSnapshot – 出力で IOPS レートを示します。

  • ModifyDBInstance – 入力パラメータに iops があり、出力で IOPS レートを示します。

  • RestoreDBInstanceFromDBSnapshot – 入力パラメータ iops が含まれており、出力が現在の IOPS レートを示します。[Apply Immediately] が指定されていた場合、出力では保留中の IOPS レートも示されます。

  • RestoreDBInstanceToPointInTime – 入力パラメータに iops があり、出力で IOPS レートを示します。

実際の IOPS レートに影響を与える要因

実際の IOPS レートは、部分的には DB エンジンによって決定されるページサイズやネットワーク帯域幅に応じて、プロビジョニングしたレートとは異なる可能性があります。また、DB インスタンスのサイズやデータベースのワークロードの影響も受けます。

ページサイズとチャネル帯域幅

理論的な最大 IOPS レートは、データベースの I/O ページサイズおよび使用可能なチャネル帯域幅の関数でもあります。使用するページサイズは、MySQL および MariaDB が 16 KB、Oracle、PostgreSQL (デフォルト)、SQL Server が 8 KB です。1,000 メガビット/秒 (Mbps) の全二重 I/O チャネル帯域幅の DB インスタンスである場合、ページ I/O の最大 IOPS は 16 KB I/O で両方向 (入出力チャネル) 約 8,000 IOPS (合計) で、8 KB I/O で両方向で約 16,000 IOPS (合計) です。

チャネルの 1 つがトラフィック容量の限界に達しても、別のチャネルで使用できる IOPS を割り当て直すことはできません。その結果、実現可能な IOPS レートはプロビジョニングした IOPS レートより低くなります。

ページの読み取りまたは書き込みアクションがそれぞれ 1 回の I/O オペレーションと見なされます。複数のページを読み書きするデータベースオペレーションは、データベースオペレーションごとに複数の I/O オペレーションを使用します。32 KB を超える I/O リクエストは、PIOPS 容量の消費という目的上、複数の I/O として扱われます。40 KB の I/O リクエストは 1.25 個の I/O を消費し、48 KB のリクエストは 1.5 個の I/O を、64 KB のリクエストは 2 個の I/O を消費するという具合です。I/O リクエストが別々の I/O に分割されることはありません。すべての I/O リクエストはストレージデバイスに対して変更されないまま渡されます。たとえば、データベースが 128 KB の I/O リクエストを送信する場合、このリクエストは単一の 128 KB の I/O リクエストとしてストレージデバイスに渡されますが、4 個の 32 KB の I/O リクエストと同じ量の PIOPS 容量を消費します。

プロビジョンド IOPS 向け DB インスタンスクラス

プロビジョンド IOPS ストレージを使用している場合は、M4、M3、R3、および M2 DB インスタンスクラスを使用することをお勧めします。これらのインスタンスクラスは、プロビジョンド IOPS ストレージ向けに最適化されています。他のインスタンスクラスは最適化されていません。

プロビジョンド IOPS 向けに最適化された DB インスタンスクラス 専用 EBS スループット (Mbps) * 最大 16k IOPS レート** 最大帯域幅 (MB/秒) **
db.m1.large 500 Mbps 4000 62.5
db.m1.xlarge 1000 Mbps 8000 125
db.m2.2xlarge 500 Mbps 4000 62.5
db.m2.4xlarge 1000 Mbps 8000 125
db.m3.xlarge 500 Mbps 4000 62.5
db.m3.2xlarge 1000 Mbps 8000 125
db.r3.xlarge 500 Mbps 4000 62.5
db.r3.2xlarge 1000 Mbps 8000 125
db.r3.4xlarge 2000 Mbps 16000 250
db.r3.8xlarge * * *
db.m4.large 450 Mbps 3600 56.25
db.m4.xlarge 750 Mbps 6000 93.75
db.m4.2xlarge 1000 Mbps 8000 125
db.m4.4xlarge 2000 Mbps 16000 250
db.m4.10xlarge 4000 Mbps 32000 500

* r3.8xlarge DB インスタンスクラスには、Amazon EBS の最適化を提供しない 10 ギガビットネットワークインターフェイスがあります。そのため、専用の EBS 帯域幅は r3.8xlarge DB インスタンスクラスでは使用できません。ただし、EBS と競合するような他のネットワークトラフィックをアプリケーションでプッシュしていなければ、これらの帯域幅を EBS へのトラフィックに使用できます。

**この値は 100% 読み取り専用ワークロードに基づいて四捨五入された概算値で、ベースライン設定の補助として提供されます。EBS に最適化された接続は全二重通信方式であり、両方向で通信回線が使用されたとき 50対50 の読み取り/書き込みワークロードでスループットと IOPS がこれ以上に利用できる場合があります。 場合によっては、ネットワーク、ファイルシステム、および EBS 暗号化のオーバーヘッドによって利用可能な最大スループットや IOPS が少なくなることがあります。

データベースのワークロード

自動バックアップ、DB スナップショット、スケールストレージオペレーションなどのシステム処理でも I/O を消費することがあり、そのため通常のデータベースオペレーションに使用できる全体の容量が減少します。データベース設計により同時実行の問題やロックなどのデータベース競合が生じた場合は、プロビジョニングしたすべての帯域幅を直接利用できるとは限りません。

ピーク時のワークロード需要を満たすように IOPS 容量をプロビジョニングした場合、ピーク時以外、アプリケーションが消費する IOPS は平均してプロビジョニング時よりも少なくなります。

プロビジョンド IOPS ストレージを最大限に利用していることを確認できるように、Disk Queue Depth という新しい CloudWatch メトリクスが追加されました。プロビジョニングした 1000 IOPS あたり約 5 件の I/O オペレーションが未処理という状態にキューの平均的な深さが維持されている場合は、プロビジョニングした容量をアプリケーションが適切に消費していると想定することができます。たとえば、10,000 IOPS をプロビジョニングした場合、プロビジョニングした容量を適切に利用するには、少なくとも 50 件の未処理の I/O オペレーションが必要です。