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

  • 汎用 (SSD) – gp2 とも呼ばれる汎用 (SSD) ボリュームは、さまざまなワークロードに対応できるコスト効率の高いストレージとして使用できます。これらのボリュームでは、レイテンシーは 1 桁台のミリ秒であり、長時間 3,000 IOPS にバーストできます。これらのボリュームのベースラインパフォーマンスは、ボリュームのサイズによって決まります。ベースラインは、1 GiB あたり 3 IOPS です。このように、ボリュームを大きくすると、パフォーマンスは向上します。たとえば、ボリュームが 100 GiB のベースラインパフォーマンスは 300 IOPS ですが、ボリュームが 1 TiB の場合は 3,000 IOPS です。3.34 TiB 以上のボリュームのベースラインパフォーマンスは 10,000 IOPS です。1 TiB 以下のボリュームで 3,000 IOPS のバーストバランスが確保されているため、ボリュームを小さくしても問題なく動きます。このバーストは、1 GiB/秒の 3 IOPS で継続して補充されます。

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

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

    ストレージサイズの範囲を含むプロビジョンド IOPS ストレージの詳細については、「プロビジョンド IOPS ストレージ」を参照してください。

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

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

既存の DB インスタンスについては、ストレージをスケールアップすると、何らかの I/O キャパシティの向上が認められる可能性があります。

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

Amazon RDS では、DB インスタンスの動作を特定するためにいくつかのメトリクスを利用できます。Amazon 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 から数百までの範囲です。

汎用 (SSD) ストレージ

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

  • MySQL、MariaDB、および PostgreSQL DB インスタンス: 20 GiB – 16 TiB

  • Oracle DB インスタンス: 20 GiB – 16 TiB

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

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

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

ワークロードによっては、3,000 IOPS のバーストストレージクレジットバランスが枯渇する場合があるため、ワークロードのニーズを満たすようにストレージ容量を計画する必要があります。

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

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

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

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

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

注記

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

次の表は、複数のストレージのサイズを示しています。各サイズについて、ストレージの関連するベースパフォーマンスを示しています。これは、I/O クレジットが蓄積されるレートでもあります。また、この表は、完全な I/O クレジットバランスで開始した場合の最大 3,000 IOPS のバースト期間を示しています。さらに、空の I/O クレジットバランスを再補充するのにストレージで必要な時間 (秒) を示しています。

ストレージサイズ (GiB) ベースパフォーマンス (IOPS) 3,000 IOPS での最大のバースト期間 (秒) 空の I/O クレジットバランスを補充するのに必要な時間 (秒)
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、およびバーストが開始された時点の I/O クレジットバランスによって異なります。この関係は次の式で示されます。

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

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

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

注記

一般的に、ほとんどのワークロードでは、I/O クレジットバランスを超えることはありません。

ベースラインパフォーマンスと I/O クレジットバランスがパフォーマンスにどのように影響を与えるかについて詳しくは、「Amazon RDS と GP2 を使用したバーストとベースラインパフォーマンスを理解する」を参照してください。

プロビジョンド 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 とストレージ (GiB) の比率の範囲
MariaDB 1,000–40,000 IOPS 100 GiB – 16 TiB 1:1–50:1
Microsoft SQL Server, Enterprise および Standard エディション 1000–20,000 IOPS 200 GiB – 16 TiB 1:1–50:1
Microsoft SQL Server、Web および Express エディション 1000–20,000 IOPS 100 GiB – 16 TiB 1:1–50:1
MySQL 1,000–40,000 IOPS 100 GiB – 16 TiB 1:1–50:1
Oracle 1,000–40,000 IOPS 100 GiB – 16 TiB 1:1–50:1
PostgreSQL 1,000–40,000 IOPS 100 GiB – 16 TiB 1:1–50:1

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

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

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

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

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

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

  • DB スナップショット – プロビジョンド IOPS ストレージを使用する DB インスタンスを使用している場合は、DB スナップショットを使用して、同じ設定の DB インスタンスを復元することができます。ターゲット DB インスタンスで、マグネティックストレージまたはプロビジョンド IOPS ストレージが使用されるかどうかに関係なく、この手順を行います。DB インスタンスでマグネティックストレージを使用している場合、DB スナップショットを使用して復元できるのは、マグネティックストレージを使用する DB インスタンスのみです。

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

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

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

料金の詳細については、「Amazon RDS 料金表」を参照してください。

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

プロビジョンド 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 レートを示します。

MariaDB、MySQL、Oracle、PostgreSQL 向けにストレージの追加とストレージタイプの変更を行う

既存の DB インスタンスでは、現行世代または次世代のインスタンスクラスでこのようなタイプの DB インスタンスを実行すると、何らかの I/O キャパシティの向上が認められる可能性があります。ストレージのスケールアップは通常数分で済みます。同様に、別のストレージタイプに変換する場合は、DB インスタンスが数分停止してから、短時間で完了します。現行世代および次世代のインスタンスクラスの詳細については、「DB インスタンスクラス」を参照してください。

DB インスタンスのストレージを変更すると、DB インスタンスのステータスは [storage-optimization] になります。ストレージ変更後、DB インスタンスは完全に動作します。ただし、6 時間、DB インスタンスステータスが [storage-optimization] の間のいずれか長い方の間は、ストレージに変更を加えることはできません。

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

既存の DB インスタンスについては、ストレージをスケールアップすると、何らかの I/O キャパシティの向上が認められる可能性があります。DB インスタンスが追加のストレージを使用するように変更したり、また、別のストレージタイプに変換したりすることができます。

割り当てられたストレージを増やすために DB インスタンスを変更すると、インスタンスが数分間停止する可能性があります。その後、DB インスタンスはオンラインですが、ストレージ最適化状態になります。ストレージ最適化中にパフォーマンスが低下することがあります。このストレージ最適化プロセスは通常短時間で終わりますが、最大で 24 時間かかる場合もあります。Amazon RDS で、ストレージサイズまたはストレージタイプを増やすために SQL Server DB インスタンスの変更が開始されると、6 時間、またはステータスがストレージ最適化の間は、ストレージサイズまたはストレージタイプを増加する別のリクエストを送信することはできません。バックアップやスナップショットなど、ストレージ最適化中の他のオペレーションへの影響はありません。

詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスの変更」を参照してください。

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

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

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

  • I/O サイズはメトリクスによって報告される IOPS 値には影響しません。メトリクスは一定期間の I/O 数のみに基づいています。つまり、この機能では、I/O サイズが 32 KB より大きい場合、指定より少ない I/O で プロビジョンド 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) ボリューム」を参照してください。

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

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

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

  • マルチ AZ ピアの作成

  • リードレプリカの作成

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

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

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

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

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

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

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

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

実際の 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、R4、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.r4.large 425 Mbps 3000 50
db.r4.xlarge 850 Mbps 6000 100
db.r4.2xlarge 1700 Mbps 12000 200
db.r4.4xlarge 3500 Mbps 18750 437
db.r4.8xlarge 7000 Mbps 37500 875
db.r4.16xlarge 14,000 Mbps 75000 1750
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
db.m4.16xlarge 10,000 Mbps 65000 1250

* 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 オペレーションが必要です。

Amazon RDS ストレージの制限事項

以下は、Amazon RDS の制限事項です。

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

  • DB インスタンスが前の世代のインスタンスクラスで実行されている場合、ストレージの追加または他の種類のストレージへの変換は時間がかかる場合があり、DB インスタンスのパフォーマンスが低下する可能性があります。そのため、これらの変更をいつ実施するかを計画する必要があります。

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

    DB インスタンスクラスの詳細については、「DB インスタンスクラス」を参照してください。

  • インスタンスクラスの種類 (次世代、現行世代、前野世代) に関係なく、マグネティックストレージやその他のストレージとの間のストレージ変換には、長い時間がかかる場合があります。マグネティックストレージと汎用 (SSD) ストレージとの間でストレージ変換が発生すると、汎用 (SSD) ストレージに割り当てられた初期の 5,400,000 I/O クレジット (3,000 IOPS x 30 分) が枯渇する可能性があります。このようなストレージの変換を実行すると、データの最初の 82 GiB は約 3,000 IOPS で変換されます。残りのデータは、割り当てられた汎用 (SSD) ストレージの 1 GiB あたり 100 IOPS というベースパフォーマンスレートで変換されます。この手法では、変換に長い時間がかかる場合があります。