Amazon RDSのDBインスタンスクラスとストレージ
RDSのDBインスタンスクラスの命名、ファミリーとサイズの選び方、SSDストレージの特性、ストレージ自動拡張の条件を解説します。
Amazon RDSのDBインスタンスクラスとストレージ
Amazon RDSでは、データベースエンジンを動かす計算資源と、データファイルを置くストレージを別々に選びます。インスタンスクラスは主にCPUとメモリの使い方を決め、ストレージタイプと容量はデータ量や読み書きの性能を左右します。CPUが不足している状況をストレージ容量だけ増やしても解決できず、I/Oが詰まっている状況をインスタンスサイズだけ上げても効率よく改善できないことがあります。
DBインスタンスクラスの表記
RDSのクラス名は一般に db. で始まり、その後にファミリーとプロセッサー系列、サイズなどが続きます。たとえば db.r6g.2xlarge では、db.r6g がクラスの種類、2xlarge がサイズを表します。r はメモリ最適化ファミリー、6g はGraviton2を使う世代です。実際に選べるクラスはデータベースエンジン、エンジンバージョン、リージョンによって異なります。
EC2と似た命名規則ですが、RDSではOSにログインしてCPUやメモリを直接変更するのではなく、対応するDBインスタンスクラスを選択します。世代が新しいクラスは新しいCPUアーキテクチャや機能を持つことがありますが、名前の数字だけで性能を比較せず、エンジンの対応状況と実際の負荷を合わせて確認します。
ファミリーとプロセッサーの違い
クラスのファミリーは、どの資源を重視するかを示します。
| ファミリーの方向性 | 主な特徴 | 選択を検討するワークロード |
|---|---|---|
| 汎用(M系など) | CPU、メモリ、ネットワークのバランスを取りやすい | 特定資源だけが極端に偏らない一般的なアプリケーションDB |
| バースト可能(T系など) | 通常時の使用量が低く、短い時間だけCPUを使う処理に向く | 開発・検証環境や、低負荷の小規模DB。ただしCPUクレジットと持続的な負荷を考慮する |
| メモリ最適化(R系、X系など) | CPUに対するメモリ量が大きい | 大きなワーキングセットをキャッシュし、メモリ容量やメモリ帯域を多く必要とするDB |
| コンピューティング最適化(C系など) | CPU処理能力を重視する | データベース側でCPUを多く使うワークロード。利用できるエンジンとクラスを確認する |
| Optimized Reads(対応するM・R系など) | ローカルNVMe SSDを使い、低レイテンシーの一時領域や読み取り処理を支援するクラスがある | 対応エンジン・クラスに限定される。永続ストレージの代替とせず、利用条件を確認する |
同じファミリーにも、Intel、AMD、AWS Gravitonなど異なるプロセッサー系列を使う世代があります。プロセッサーは独立したオプションとしてすべてのクラスに後付けできるものではなく、クラス名の系列と利用可能な選択肢に含まれます。命令セットや対応エンジンが異なる場合があるため、単価だけで切り替えず、アプリケーションとの互換性やベンチマーク結果も見ます。
ただし、RDS for Oracleでは対応する一部クラスに対して、CPUコア数やコアあたりのスレッド数を調整する「プロセッサー機能」があります。たとえば、十分なメモリを維持しながらCPUコア数を減らし、BYOL(ライセンス持ち込み)環境のライセンス費用を最適化する用途があります。利用にはエンジン、クラス、ライセンス方式などの条件があり、すべてのRDSエンジンやクラスで使える設定ではありません。通常のクラス選択と、このOracle固有のプロセッサー設定を区別してください。
サイズとクラスの調整
各ファミリーには micro、small、medium、large、xlarge、2xlarge などのサイズがあります。一般に大きいサイズほどvCPUやメモリが増え、料金も高くなります。ただし、異なるファミリーや世代の同じサイズ名が同じ性能を持つとは限りません。サイズ展開や名称もファミリーごとに異なります。
クラスを決めるときは、CPU使用率、メモリ使用量、接続数、待ち時間、データベースエンジン固有の性能指標を観測します。小さいクラスから無条件に始めるのではなく、想定するデータ量と並行処理を使った負荷試験でボトルネックを特定し、必要な資源を増やして再測定します。CPUが余っていてメモリ不足ならメモリ最適化ファミリー、通常は低負荷だが短時間だけ処理が集中するならバースト可能クラスというように、サイズ変更とファミリー変更を区別して考えます。
RDSストレージタイプ
ストレージは、必要な容量だけでなく、IOPS(1秒あたりのI/O操作数)とスループット(単位時間あたりのデータ転送量)で選びます。トランザクションの小さな読み書きを多数処理するDBではIOPSが重要になり、大きな連続データを読み書きする処理ではスループットも確認します。
| タイプ | 性能の決まり方 | 主な使い方と注意点 |
|---|---|---|
| 汎用SSD gp2 | 割り当てた容量に応じてベースラインのIOPSが決まり、小容量ではバースト性能が関係する | 幅広い用途に使われる。容量を増やすと性能特性も変化する |
| 汎用SSD gp3 | ベース性能を備え、対応構成ではストレージ容量と追加のIOPS・スループットを別に調整できる | 多くの一般的なDBワークロードの候補。必要な性能を容量増加だけで買わずに済む場合がある |
| プロビジョンドIOPS SSD io1/io2 | ストレージ容量とは別に必要なIOPSを指定して確保する | 高いI/O性能を継続的に求めるOLTPなど。IOPSの設定値、インスタンスの上限、追加費用を確認する |
| マグネティック | 廃止された旧世代の磁気ストレージ | 新しいDBインスタンスの作成には使えない。2026年7月1日以降、スナップショットの復元先にも選べない |
gp2とgp3の違いは、容量を増やすことが性能向上にどの程度結び付くかです。gp2では割り当て容量とIO性能に関連があり、gp3では対応する構成で容量、IOPS、スループットをより独立して調整できます。高いIOPSが必要な場合はio1/io2を比較しますが、プロビジョンドIOPSを選ぶとストレージ容量に加えて設定した性能にも料金が関係します。正確な上限や選択可能な組み合わせはエンジン・クラス・リージョンごとに確認します。
マグネティックストレージは廃止されています。新しいDBインスタンスの作成には使用できず、2026年7月1日以降はスナップショットの復元先としても選択できません。磁気ストレージを使っていたDBを復元する場合は、gp3やio2 Block Expressなど別のストレージタイプを選びます。
ストレージの自動拡張
RDSのストレージ自動拡張を有効にすると、監視中の空き容量が少なくなったときに、割り当てストレージを自動的に増やせます。拡張後もデータベースを使い続けながら容量不足による停止を避けやすくなりますが、設定した上限を超えて無制限に増えるわけではありません。
対応するDBインスタンスでは、次の条件がすべて満たされるとRDSがストレージ変更を開始します。
- 空き容量が割り当て容量の 10%以下 である。
- この低容量の状態が 少なくとも5分間 続く。
- 前回のストレージ変更に対するストレージ最適化が完了している。
- 直近24時間に行われたストレージ変更が 4回未満 である。
RDSが追加する容量は、10 GiB、現在の割り当て容量の10%、または直近1時間の空き容量メトリクスを基に予測した今後7時間の容量増加量のうち、最も大きい値に基づいて決まります。自動拡張を使う際は最大ストレージしきい値を適切に設定し、空き容量のCloudWatchメトリクスにもアラームを用意します。最大しきい値は現在の割り当て容量より少なくとも10%大きく設定する必要があり、AWSは上限に近づいたというイベント通知を避けるため、少なくとも26%大きくすることを推奨しています。使用量が増え続けて上限に達すると、それ以上は拡張できず、空き容量不足の危険が残ります。
割り当て容量が増えるとストレージ料金にも影響するため、データ増加率や予算に応じて上限を管理してください。ストレージ自動拡張は容量不足を緩和する仕組みであり、低速なI/Oを自動的に高性能ストレージへ変更したり、CPUやメモリを増強したりする機能ではありません。
選択と運用の進め方
クラスとストレージは別々に選んだうえで、相互に影響する指標を一緒に監視します。
- エンジン、バージョン、リージョンで利用できるDBインスタンスクラスを絞ります。
- CPU・メモリのワークロードから、汎用、バースト可能、メモリ最適化のファミリーを選びます。
- データ量とアクセスパターンからSSDタイプを選び、必要なIOPS・スループットを設定します。
- 想定データと同時実行数で性能試験を行い、CPU、メモリ、ストレージI/Oのどこが制約かを測定します。
- ストレージ自動拡張を使う場合は最大しきい値を定め、空き容量とコストを監視します。
たとえば、商品カタログを扱うDBで検索要求の増加により待ち時間が伸びた場合、CPU飽和ならDBクラス、ディスクI/O待ちならストレージタイプやIOPS、メモリ上のデータ保持不足ならメモリ比率を検討します。同じ「遅い」という症状でも原因ごとに変更箇所が異なるため、計測結果から調整してください。
試験での見分け方
- CPUやメモリが不足している … クラスのサイズを上げるか、ボトルネックに合うファミリーへ変更する。
- 短時間のCPUピークがあり、通常時の利用率は低い … バースト可能クラスを候補にし、CPUクレジットの条件を確認する。
- 安定した高IOPSが必要 … io1/io2のプロビジョンドIOPSを検討する。容量とIOPSの両方を設定する。
- 空き容量が割り当て容量の10%以下で5分続いた … 自動拡張の条件を確認する。直近24時間の変更回数とストレージ最適化の完了も条件になる。
- 自動拡張で増える容量や費用を管理したい … 最大ストレージしきい値を設定し、増加量と上限到達の通知を見込んで監視する。
- サイズを大きくすればI/O性能も必ず十分になる … 誤り。クラスの計算資源とストレージ性能は別々に確認する。
公式ドキュメント
重要ポイント
- ▸DBインスタンスクラスはファミリー、世代、サイズの組み合わせで、CPUとメモリの特性を決める
- ▸汎用、バースト可能、メモリ最適化などからワークロードに合うクラスを選び、負荷試験で調整する
- ▸gp2は容量に応じてIO性能が変わり、gp3は容量とIOPS・スループットを分けて調整できる構成がある
- ▸io1/io2は高く安定したIOPSを必要とする処理向けで、容量だけでなくプロビジョンドIOPSも考慮する
- ▸RDSストレージ自動拡張は空き容量が割り当て容量の10%以下で5分続いた場合などに、設定した最大容量まで拡張する
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
同じサービスの関連トピック
AWSデータベースサービス に関連するトピックを続けて確認できます。