Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

Amazon RDS DB インスタンスストレージ

MySQL、MariaDB、PostgreSQL、Oracle、および Microsoft SQL Server 用の Amazon RDS の DB インスタンスは、データベースおよびログのストレージに Amazon Elastic Block Store (Amazon EBS) ボリュームを使用します。要求されるストレージの量によって、Amazon RDS は自動的に複数の Amazon EBS ボリューム全体をストライプして、 パフォーマンスを向上させます。

Amazon RDS ストレージの種類

Amazon RDS は 3 種類のストレージタイプを提供します。汎用 SSD (別名 gp2)、プロビジョンド IOPS SSD (別名 io1) およびマグネティックです。これらはパフォーマンス特性と料金が異なるため、データベースのワークロードに応じてストレージのパフォーマンスとコストを調整できます。最大 64 TiB のストレージを備えた MySQL、MariaDB、および PostgreSQL RDS DB インスタンスを作成できます。最大 64 TiB のストレージを備えた Oracle RDS DB インスタンスを作成できます。最大 16 TiB のストレージを備えた SQL Server RDS DB インスタンスを作成できます。このストレージ量には、プロビジョンド IOPS SSD および汎用 SSD ストレージタイプを使用します。

次のリストでは、この 3 つの種類のストレージタイプを簡略に説明しています。

  • 汎用 SSD – 汎用 SSD ボリューム (gp2 とも呼ばれる) は、さまざまなワークロードに対応できるコスト効率の高いストレージとして使用できます。これらのボリュームでは、レイテンシーは 1 桁台のミリ秒であり、長時間 3,000 IOPS にバーストできます。これらのボリュームのベースラインパフォーマンスは、ボリュームのサイズによって決まります。

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

  • プロビジョンド IOPS – プロビジョンド IOPS ストレージは、I/O レイテンシーおよび継続する I/O スループットが必要となる I/O 重視のワークロード (特にデータベースワークロード) の要件を満たすように設計されています。

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

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

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

汎用 SSD ストレージ

汎用 SSD ストレージは、ほとんどのデータベースワークロードで使用できる、コスト効果に優れたストレージです。汎用 SSD DB インスタンスのストレージサイズの範囲は以下のとおりです。

  • MariaDB、MySQL、PostgreSQL データベースインスタンス: 20~64 TiB

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

  • Oracle インスタンス: 20 GiB - 64 TiB

汎用 SSD ストレージのベースライン I/O パフォーマンスは、1 GiB あたり 3 IOPS です。この関係は、ボリュームが大きいほどパフォーマンスが向上することを意味します。たとえば、100 GiB のボリュームのベースラインパフォーマンスは 300 IOPS になります。1 TiB のベースラインパフォーマンスは 3,000 IOPS になります。また、5.34 TiB のボリュームのベースラインパフォーマンスは 16,000 IOPS になります。

1 TiB 未満のボリュームサイズでも、長期間にわたって 3,000 IOPS をバーストする性能があります。1 TiB 以上のボリュームでは、バーストは重要ではありません。インスタンス I/O クレジットバランスによって、バーストパフォーマンスが決まります。インスタンス I/O クレジットの詳細については、「I/O クレジットおよびバーストパフォーマンス」を参照してください。

多くのワークロードはバーストバランスを消費することがないため、汎用 SSD はさまざまなワークロードで最適なストレージとなります。しかしながら、ワークロードによっては、3,000 IOPS のバーストストレージクレジットバランスが枯渇する場合があるため、ワークロードのニーズを満たすようにストレージ容量を計画する必要があります。

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

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

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

ベースパフォーマンスの I/O レベルよりも高いレベルがストレージで必要となる場合は、I/O クレジットバランスの I/O クレジットを使用して、必要なパフォーマンスレベルまでバーストします。このようなバーストは最大で 3000 IOPS まで到達します。1000 GiB 以上の規模のストレージには、最大バーストパフォーマンスと同等あるいはそれ以上のベースパフォーマンスがあります。ストレージで使用される I/O クレジットが毎秒取得される I/O クレジットよりも少ない場合、未使用の I/O クレジットは I/O クレジットバランスに追加されます。汎用 SSD ストレージを使用した DB インスタンスの最大 I/O クレジットバランスは、初期 I/O クレジットバランス (540 万 I/O クレジット) と同じです。

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

注記

マグネティックストレージと汎用 SSD ストレージ間でストレージを変換すると、I/O クレジットバランスを使い切る可能性があり、よってより長期の変換時間となります。ストレージのスケーリングについての詳細は、「Amazon RDS DB インスタンスのストレージを使用する」を参照してください。

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

注記

IOPS の数値は、5,334 GiB のボリュームストレージサイズで最大値に達します。

ストレージサイズ (GiB) ベースパフォーマンス (IOPS) 3000 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 無制限 該当なし
5,334 16,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 SSD ストレージ

高速で一貫した I/O 性能を必要とする本稼働アプリケーションには、プロビジョンド IOPS (1 秒あたりの入力/出力オペレーション) ストレージが推奨されます。プロビジョンド IOPS ストレージは、予測可能なパフォーマンスと一貫して低いレイテンシーを実現するストレージタイプです。プロビジョンド IOPS ストレージは、一貫したパフォーマンスを要件とするオンライントランザクション処理 (OLTP) ワークロード向けに最適化されています。プロビジョンド IOPS は、このようなワークロードのパフォーマンス調整に役立ちます。

DB インスタンスの作成時に、IOPS レートとボリュームのサイズを指定します。Amazon RDS は、変更されるまで、この IOPS レートを DB インスタンスに提供します。

注記

データベースワークロードは、プロビジョニングした IOPS を 100% 到達できない場合があります。

次の表は、各データベースエンジンのプロビジョンド IOPS の範囲とストレージのサイズ範囲を示しています。

データベースエンジン プロビジョンド IOPS の範囲 ストレージの範囲

MariaDB

1,000–80,000 IOPS 100 GiB – 64 TiB
SQL Server, Enterprise および Standard エディション 1000~64,000 IOPS* 20 GiB – 16 TiB
SQL Server、Web および Express エディション 1000~64,000 IOPS* 100 GiB – 16 TiB
MySQL 1,000–80,000 IOPS 100 GiB – 64 TiB
Oracle 1,000–80,000 IOPS 100 GiB– 64 TiB
PostgreSQL 1,000–80,000 IOPS 100 GiB – 64 TiB

* の最大 IOPS である 64,000 は、m5 インスタンスタイプである Nitro ベースのインスタンスでのみ保証されています。その他のインスタンスファミリーは、最大 32,000 IOPS までのパフォーマンスを保証します。

プロビジョンド IOPS ストレージにマルチ AZ 配置あるいはリードレプリカの組み合わせ

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

また、MySQL、MariaDB または PostgreSQL でもプロビジョンド IOPS SSD ストレージのリードレプリカを使用できます。リードレプリカのストレージタイプは、マスター DB インスタンスのストレージのタイプとは異なります。たとえば、リードレプリカには 汎用 SSD を使用し、マスター DB インスタンスにはプロビジョンド IOPS SSD ストレージを使用してコストを削減できます。ただし、この場合のリードレプリカのパフォーマンスは、マスター DB インスタンスとリードレプリカの両方がプロビジョンド IOPS SSD ストレージを使用する設定とは異なる可能性があります。

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

プロビジョンド IOPS ストレージでは、月別に実際に使用したかどうかに関係なく、プロビジョンドされたリソースに応じて課金されます。

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

Amazon RDS プロビジョンド IOPS SSD ストレージを最大限に活用する

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

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

マグネティックストレージ

また、Amazon RDS は下位互換性のためにマグネティックストレージをサポートしています。新しいストレージが必要な場合には、汎用 SSD またはプロビジョンド IOPS SSD の使用が推奨されます。次に示すのは、マグネティックストレージにおけるいくつかの制限です。

  • SQL Server データベースエンジン使用時には、ストレージをスケーリングできません。

  • Elastic ボリュームをサポートしていません。

  • 最大サイズが 4 TiB に制限されます。

  • 最大で 1000 IOPS に制限されます。

ストレージのパフォーマンスをモニタリングする

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

次のメトリックスは、DB インスタンスのストレージをモニタリングするために便利です。

  • 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 から数百までの範囲です。

測定された IOPS 値は、個別の I/O オペレーションのサイズには依存しません。これは、I/O パフォーマンスの測定時に、I/O オペレーションのみではなく、インスタンスのスループットを見る必要があることを意味しています。

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

システムの活用状況およびデータベースワークロードはどちらもストレージのパフォーマンスに影響する可能性があります。

システムの活用状況

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

  • マルチ AZ スタンバイの作成

  • リードレプリカの作成

  • ストレージタイプを変更する

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

一部の場合では、データベースあるいはアプリケーションの設計によって同時実行問題、ロック状態あるいはその他のデータベースの競合が発生します。このような場合、プロビジョニングされた帯域幅のすべてを直接使用できない場合があります。また、以下のワークロードに関連する状況が発生する場合があります。

  • 基本的なインスタンスタイプのスループット制限に到達すること。

  • アプリケーションが十分な I/O オペレーションを進行していないため、キューの深度が 1 を大幅に下回ること。

  • 一部の I/O キャパシティが未使用にもかかわらず、データベースでクエリの競合が発生すること。

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

DB インスタンスクラス

Amazon RDS データベースインスタンスで最大限のパフォーマンスを取得するには、現行世代のインスタンスタイプを十分な帯域幅で選択肢て、ストレージタイプをサポートします。例えば、EBS 最適化インスタンスおよび 10 ギガバイトのネットワーク接続のインスタンスを選択できます。

EBS 最適化をサポートする Amazon EC2 インスタンスタイプの全リストについては、「EBS 最適化をサポートするインスタンスタイプ」を参照してください。

最適なパフォーマンスを得るには、最新世代のインスタンスを使用してください。旧世代の DB インスタンスを使用すると、インスタンスストレージの上限が低くなります。次の表は、各 DB インスタンスクラスが各データベースエンジンに対して拡張できる最大ストレージを示しています。値はすべてテビバイト (TiB) です。

インスタンスクラス MariaDB Microsoft SQL Server MySQL Oracle PostgreSQL
db.m5 – 最新世代の標準インスタンスクラス
db.m5.24xlarge 64 16 64 64 64
db.m5.12xlarge 64 16 64 64 64
db.m5.4xlarge 64 16 64 64 64
db.m5.2xlarge 64 16 64 64 64
db.m5.xlarge 64 16 64 64 64
db.m5.large 64 16 64 64 64
db.m4 – 現行世代の標準インスタンスクラス
db.m4.16xlarge 64 16 64 64 64
db.m4.10xlarge 64 16 64 64 64
db.m4.4xlarge 64 16 64 64 64
db.m4.2xlarge 64 16 64 64 64
db.m4.xlarge 64 16 64 64 64
db.m4.large 64 16 64 64 64
db.m3 – 前の世代の標準インスタンスクラス
db.m3.2xlarge 6 16 6 6 6
db.m3.xlarge 6 16 6 6 6
db.m3.large 6 16 6 6 6
db.m3.medium 32 16 32 32 32
Instance Class MariaDB Microsoft SQL Server MySQL Oracle PostgreSQL
db.r5 – 最新世代のメモリ最適化インスタンスクラス
db.r5.24xlarge 16 16 64 64
db.r5.12xlarge 16 16 64 64
db.r5.4xlarge 16 16 64 64
db.r5.2xlarge 16 16 64 64
db.r5.xlarge 16 16 64 64
db.r5.large 16 16 64 64
db.r4 – 現行世代のメモリ最適化インスタンスクラス
db.r4.16xlarge 64 16 64 64 64
db.r4.8xlarge 64 16 64 64 64
db.r4.4xlarge 64 16 64 64 64
db.r4.2xlarge 64 16 64 64 64
db.r4.xlarge 64 16 64 64 64
db.r4.large 64 16 64 64 64
db.r3– 前の世代のメモリ最適化インスタンスクラス。
db.r3.8xlarge 64 16 64 64 64
db.r3.4xlarge 64 16 64 64 64
db.r3.2xlarge 64 16 64 64 64
db.r3.xlarge 64 16 64 64 64
db.r3.large 64 16 64 64 64
Instance Class MariaDB Microsoft SQL Server MySQL Oracle PostgreSQL
db.t3 – 最新世代のバースト可能なパフォーマンスインスタンスクラス
db.t3.2xlarge 16 16 64 64
db.t3.xlarge 16 16 64 64
db.t3.large 16 16 64 64
db.t3.medium 16 16 32 32
db.t3.small 16 16 32 16
db.t3.micro 16 16 32 16
db.t2 – 現行世代のバースト可能なパフォーマンスインスタンスクラス
db.t2.2xlarge 64 16 64 64 64
db.t2.xlarge 64 16 64 64 64
db.t2.large 64 16 64 64 64
db.t2.medium 32 16 32 32 32
db.t2.small 16 16 16 16 16
db.t2.micro 16 16 16 16 16
Instance Class MariaDB Microsoft SQL Server MySQL Oracle PostgreSQL
db.x1e – 最新世代のメモリ最適化インスタンスクラス
db.x1e.32xlarge 16 64
db.x1e.16xlarge 16 64
db.x1e.8xlarge 16 64
db.x1e.4xlarge 16 64
db.x1e.2xlarge 16 64
db.x1e.xlarge 16 64
db.x1 – 現行世代のメモリ最適化インスタンスクラス
db.x1.32xlarge 16 64
db.x1.16xlarge 16 64

Oracle の場合、80,000 IOPS までの拡張は、次のインスタンスクラスでのみサポートされています。

  • db.m5.24xlarge

  • db.r5.24xlarge

  • db.x1.32xlarge

  • db.x1e.32xlarge

サポートされているすべてのインスタンスクラスの詳細については、「旧世代の DB インスタンス」を参照してください。