🐬

[Amzon RDS]RDS DBインスタンスまとめ

2024/07/18に公開

Amazon RDSを使用する際、DBインスタンスをどういう情報をもとに選択すればよいのか分からなかった&見方も分からなかったため情報をまとめました

DBインスタンスクラス

H/W仕様

詳細は以下参照とするが、下に挙げられる指標がある。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Summary

vCPU

仮想中央演算装置 (CPU) の数。仮想 CPU は、DB インスタンスクラスの比較に使用できる容量の単位です。

メモリ(GiB)

DB インスタンスに割り当てられる RAM (ギガバイナリバイト単位)。通常、メモリと vCPU の比率は一定です。

EBS最適化

DB インスタンスは、最適化された設定スタックを使用し、I/O 用に専用の容量を追加で提供します。このように最適化することで、I/O と、インスタンスからのその他のトラフィックとの間の競合を最小に抑え、最高のパフォーマンスを実現します。
EBS 最適化インスタンスには、ベースライン IOPS(Input/Output Per Second) レートと最大 IOPS レートがあります。最大 IOPS レートは、DB インスタンスレベルで適用されます。IOPS レートが最大値を超えるように組み合わされた EBS ボリュームのセットは、インスタンスレベルのしきい値を超えることはできません。

(classmethod様のウェビナーでEBSのご説明があったので追記しました。これはec2のご紹介でした)

DBインスタンスクラスタイプ

Amazon RDSのDBインスタンスクラスタイプは5種類がサポートされている
インスタンスクラスは以下の形式で表される

db.<instance_class_type><number><p><d><n>


(classmethod様のウェビナーでインスタンスタイプの紹介があったので追記しました。これはec2のご紹介でした)

  • <instance_class_type>:インスタンスクラスのタイプ
    m:汎用インスタンスクラス
    z,x,r:メモリ最適化インスタンスクラス
    c:コンピューティング最適化インスタンスクラス
    t:バーストパフォーマンスインスタンスクラス
    r6<p>d:Optimized Readsインスタンスクラス
  • <number>:数字が入る。大きいほど性能が良いようだ
  • <p>:ローマ字でプロセッサを表している
    g:AWS Graviton
    i:第3世代インテルXeonスケーラブルプロセッサ
    なし:インテルXeonPlatinumプロセッサ/ 2.5 GHz インテル Xeon Platinum プロセッサ/インテル Xeon プロセッサ
  • <d>:dがあった場合SSDストレージが搭載されている
  • <n>:nがあった場合ネットワーク最適化が搭載されている

汎用

汎用インスタンスは、コンピューティング、メモリ、ネットワークのリソース間のバランスを取ります。以下のようなさまざまなワークロードに使用できます。

  • アプリケーションサーバー
  • ゲームサーバー
  • エンタープライズアプリケーションのバックエンドサーバー
  • 小規模および中規模のデータベース

例えば、自社のアプリケーションは、コンピューティング、メモリ、ネットワークに必要なリソースがほぼ同等であるとします。その場合は、アプリケーションはいずれのリソースでも最適化を必要としないため、汎用インスタンスでの実行を検討してみるとよいかもしれません。

メモリ最適化

「メモリ最適化 Z ファミリー」と「メモリ最適化 X ファミリー」と「メモリ最適化 R ファミリー」がある。
メモリを大量に消費するアプリケーション用。

メモリ最適化インスタンスは、メモリ内で大規模なデータセットを処理するワークロードで高速パフォーマンスを実現できるように設計されています。コンピューティングの世界では、メモリとは一時的なストレージ領域のことをいいます。中央処理装置 (CPU) がアクションを実行するために必要とするデータや指示は、すべてここに保管されます。コンピュータプログラムやアプリケーションは、実行される前にストレージからメモリにロードされます。このプリロードプロセスによって、CPU からコンピュータプログラムへの直接アクセスが可能になります。

アプリケーションを実行する前に大量のデータをプリロードする必要があるワークロードがあるとします。こうしたシナリオには、高パフォーマンスのデータベースや、大量な非構造化データをリアルタイムで処理するワークロードなどがあります。こうしたユースケースでは、メモリ最適化インスタンスの使用を検討してみましょう。メモリ最適化インスタンスを使用することにより、大量のメモリを必要とするワークロードを実行し、優れたパフォーマンスを実現できます。

コンピューティング最適化

コンピューティング最適化インスタンスは、高パフォーマンスプロセッサの恩恵を受けるコンピューティングバウンドのアプリケーションに最適です。このインスタンスは、汎用インスタンスと同様、ウェブサーバー、アプリケーションサーバー、ゲームサーバーなどのワークロードに使用できます。

ただし、コンピューティング最適化インスタンスは、高性能のウェブサーバー、計算負荷の高いアプリケーションサーバー、専用のゲームサーバーに最適です。また、1 つのグループで多くのトランザクションを処理する必要があるバッチ処理ワークロードにコンピューティング最適化インスタンスを使用することもできます。

バースト可能パフォーマンス

CPU の最大使用率までバーストすることも可能なインスタンスクラス

インスタンスクラス プロセッサ
db.t4g ARM ベースの AWS Graviton2 プロセッサ
db.t3 専用ハードウェアと軽量ハイパーバイザーが組み合わされた AWS Nitro System

Optimized Reads

メモリ負荷の高いワークロードの実行に最適

インスタンスクラス プロセッサ
db.r6gd AWS Graviton2 プロセッサ
db.r6id 第 3 世代 Intel Xeon スケーラブルプロセッサ

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html#Concepts.DBInstanceClass.Types

https://aws.amazon.com/jp/rds/instance-types/

RDSとAuroraの違い

https://dev.classmethod.jp/articles/aurora-or-rds-by-table/
https://dev.classmethod.jp/articles/developers-io-2019-in-osaka-aurora-or-rds

料金

DBインスタンスの起動時間 + ストレージ容量の料金 + I/Oリクエスト数(Auroraのみ)となる。
全体的にはRDSのほうが安いが、ストレージ料金はAuroraのほうが安いため、ストレージ量が多い場合はAuroraのほうが安くなる場合もある。

スループット

SysBench のような標準のベンチマークでテストした結果、同様のハードウェア上の標準的な MySQL と比べ最大 5 倍、標準的な PostgreSQL と比べ最大 3 倍のスループットの向上が見られました。

Auroraを使うべきケース

  • MySQLかPostgreSQLを使用する
  • ストレージ量が多い
  • Single-AZでよい
  • StandByレプリカ(プライマリインスタンスがクラッシュした場合に、リードレプリカをプライマリインスタンスに自動昇格させる機能)が必要
  • 作業負荷を下げたい場合(クエリチューニングなど)

廃止予定のインスタンスクラス

非Nitro基盤で動作するインスタンスファミリーはNitro基盤で動作するインスタンスファミリーへと切り替えられるそうです。

Nitro基盤:専用ハードウェアと軽量ハイパーバイザーを組み合わせたインスタンス

https://blog.serverworks.co.jp/retirement-of-amazon-rds-db-m4-db-r4-db-t2-instances-and-ri-recommendation#リザーブドインスタンスが新規購入不可となるタイミング

Discussion