データベースストレージ - AWS で Oracle Database を実行するためのベストプラクティス

データベースストレージ

通常、ほとんどのユーザーはデータベースストレージ用に Amazon EBS を使用します。一部の非常に高性能なアーキテクチャでは、インスタンスストレージ SSD を使用できますが、信頼性の高い永続性のためには Amazon EBS ストレージで拡張する必要があります。

一貫した高 IOPS と高データベースパフォーマンスを得るには、汎用 (GP2) ボリュームまたはプロビジョンド IOPS (PIOPS) ボリュームの使用を強くお勧めします。GP2 ボリュームと PIOPS ボリュームは、Amazon EC2 と Amazon RDS の両方で使用できます。GP2 と PIOPS の両方のボリュームタイプのボリュームあたりの IOPS の最新の制限については、「Amazon RDS DB インスタンスストレージ」を参照してください。GP2 ボリュームは、ほとんどのデータベースニーズに対して、料金とパフォーマンスのバランスが非常に優れています。GP2 が提供できる IOPS よりも高い IOPS をデータベースで必要とする場合、PIOPS ボリュームが適切な選択肢となります。

PIOPS ボリュームの場合、ボリュームの作成時に IOPS レートを指定すると、Amazon EBS はプロビジョンド IOPS の 10% 以内のパフォーマンスを 1 年の 99.9% を通じて提供します。リクエストされたボリュームサイズに対する、プロビジョニングされている IOPS の割合は 30 以下です。例えば、3,000 IOPS を実現するには、ボリュームサイズを 100 GB 以上にする必要があります。

PIOPS ボリュームと同様に、GP2 ボリュームも SSD ベースですが、GP2 ボリュームから得られる IOPS は、ベースライン IOPS からボリュームあたりのバースト可能な最大バースト可能な 3,000 IOPS までさまざまです。データベースに必要な IOPS パフォーマンスは、ロードサイズと実行されるクエリの数によって一定期間において何回も変化するため、これはほとんどのデータベースワークロードに非常に適しています。

汎用 (SSD) ボリュームのパフォーマンスは、ボリュームサイズの影響を受けます。ボリュームサイズによって、ボリュームのベースパフォーマンスレベルや I/O クレジットを取得する速さが決まります。ボリュームサイズが大きいほどベースパフォーマンスレベルが高くなり、I/O クレジットの取得速度も速くなります。

I/O クレジットとは、ベースのパフォーマンスでは不十分な場合、大量の I/O をバーストする際に汎用 (SSD) ボリュームで使用できる帯域幅を表します。ボリュームが I/O に対して保持しているクレジットが多いほど、長い時間ベースラインパフォーマンスレベルを超えたバーストが可能で、より高いパフォーマンスが必要な場合パフォーマンスも向上します。

スループット最適化 HDD ボリューム (st1) は、IOPS は少ないが高スループットでなければならない、負荷の高いワークロード向けに設計された低コストの HDD ボリュームを提供します。データウェアハウスとデータ分析の目的で使用される Oracle Database は、st1 ボリュームを活用できます。

Oracle 外部テーブルや外部 BLOB ストレージなど、高スループットを必要とするログ処理エリアやデータステージングエリアでは、st1 ボリュームを活用できます。スループット最適化 (st1) ボリュームは、ボリュームあたり最大 500 IOPS を処理できます。

コールド HDD ボリューム (sc1) は、レガシーシステムの処理に適しています。レガシーシステムは、一時的な参照やアーカイブのために保持されます。これらのシステムへのアクセス頻度は低く、ボリュームに対して 1 日あたり数回のスキャンが実行されます。

データベースに一貫して必要な IOPS の量を見積もり、その数の IOPS を得るのに十分な GP2 ストレージを割り当てことをお勧めします。定期的なスパイクに必要な追加の IOPS は、利用可能なクレジットに基づくバーストパフォーマンスによってカバーされます。

Oracle Database の IOPS ニーズを判断するために使用できる推定方法については、「AWS での Oracle Database の IOPS ニーズを判別する」ホワイトペーパーを参照してください。

ボリュームのバースト期間は、ボリュームのサイズ、必要なバースト IOPS、およびバーストが開始された時点のクレジットバランスによって異なります。ボリュームのパフォーマンスがベースレベルに頻繁に制限されることが確認される場合は (空の I/O クレジットバランスが原因)、より大きな (ベースパフォーマンスレベルが高い) 汎用 (SSD) ボリュームの使用を考慮するか、10,000 IOPS を超える持続的な IOPS パフォーマンスが必要となるワークロードに適したプロビジョンド IOPS (SSD) ボリュームに切り替えることを考慮してください。GP2 ボリュームの詳細については、「Amazon EBS ボリュームのタイプ」を参照してください。

Amazon RDS の場合、汎用 (SSD) ストレージは、プロビジョニング容量 1 GB あたり 3 IOPS の安定したベースラインを実現し、3,000 IOPS までのバーストが可能です。Amazon RDS にマグネティックストレージを既に使用している場合は、汎用 (SSD) ストレージに変換できますが、その際に可用性への影響が短時間発生します。プロビジョンド IOPS を使用すると、現在の最大ストレージ制限とデータベースインスタンスあたりの最大 IOPS までプロビジョニングできます。

実際の IOPS はデータベースの負荷、インスタンスタイプ、データベースエンジンに基づいてプロビジョニングされた量により異なります。詳細については、Amazon RDS ユーザーガイドの「実際の IOPS レートに影響を与える要因」を参照してください。

Amazon EC2 上の Oracle Database に対しては、IOPS と容量を増やすために、複数のボリュームをまとめてストライプ化します。異なるデータファイルに対して複数の Amazon EBS ボリュームを個別に使用できますが、これらをまとめてストライプ化すると、バランスとスケーラビリティが向上します。

ストライプ化には Automatic Storage Management (ASM) を使用できます。データファイル、ログファイル、バイナリを別々の Amazon EBS ボリュームに保持し、ログファイルボリュームのスナップショットを定期的に作成します。ローカル SSD ストレージを使用するインスタンスタイプを選択すると、Smart Flash Cache (オペレーティングシステムが Oracle Linux の場合) を使用し、さらに一時ファイルとテーブルスペースにローカルストレージを使用して、データベースのパフォーマンスを向上させることができます。

VMware Cloud on AWS 上の Oracle Database の場合、vSAN はベアメタルホスト全体にストライプ化された必要な仮想化ストレージを提供します。vSAN の仮想化ストレージ機能を Oracle RAC で使用して、高パフォーマンスの共有ストレージを実現できます。

Oracle RAC 用に作成された VMDK (仮想マシンディスク) ファイルは、Eager Zero Thick 用にプロビジョニングされ、マルチライターフラグが有効になっている必要があります。VMware は、VMware Cloud on AWS 上の Oracle Database に関する詳細なパフォーマンス調査結果を公開しています。