SQL Server のストレージを最適化する
概要
このセクションでは、EC2 ワークロード上の SQL Server 用 Amazon Elastic Block Store (Amazon EBS) SSD ストレージのコスト最適化に焦点を当てます。
SQL Server ワークロードを AWS にデプロイして実行するためのさまざまなストレージオプションがあります。適切なストレージの選択は、目的、アーキテクチャ、耐久性、パフォーマンス、キャパシティ、コストに基づいて行う必要があります。SQL Server ワークロードを実行している AWS のお客様は通常、Amazon EBS、NVMe、Amazon FSx、Amazon Simple Storage Service (Amazon S3) のストレージの組み合わせを使用します。
Amazon EBS は、EC2 コンピューティングインスタンスに接続されたネットワークアタッチドストレージであり、一般的なオペレーティングシステム、アプリケーション、データベース、バックアップファイルの保存と処理に使用されます。Amazon EBS ソリッドステートドライブ (SSD) ストレージには、汎用 SSD (gp2 および gp3) とプロビジョンド IOPS SSD (io1、io2、io2BX) が含まれています。以下の点を考慮してください。
-
r5d などの一部の EC2 インスタンスには、ホストインスタンスに物理的にアタッチされたローカル NVMe SSD があります。これらのボリュームは、一般的に SQL Server tempdb またはバッファプール拡張機能に使用されるブロックレベルストレージを提供します。
-
Amazon FSx for Windows File Server はフルマネージド型のファイルストレージサービスであり、Amazon FSx for NetApp ONTAP は、NetApp の一般的な ONTAP ファイルシステム上に構築されたフルマネージド型の共有ストレージです。Amazon FSx は、高可用性の SQL Server フェイルオーバークラスターインスタンス (FCI) 設定で SQL Server ワークロードを実行するためによく使用されます。このソリューションは SQL Server のデータおよびログファイルをホストするため、EC2 インスタンスの EBS パフォーマンス要件が軽減されます。
-
Amazon S3 は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。SQL Server のネイティブバックアップファイル、AMI、EBS スナップショット、アプリケーションログなどを Amazon S3 に保存できます。
Amazon EBS の SSD ストレージタイプ、パフォーマンス、コスト
Amazon EBS の SSD ストレージコストは、一般的に耐久性とパフォーマンスの向上に伴って増加します。現在、ストレージには 5 つのボリュームタイプがあり、それぞれに独自のパフォーマンスメトリクスがあります。SSD ベースのボリュームのユースケースと特性の概要については、Amazon EBS ドキュメントの「Solid state drive (SSD) volumes」セクションの表を参照してください。
Amazon CloudWatch を使用して、SSD のパフォーマンスのモニタリング、トレンドデータのキャプチャ、特定のしきい値に達したときのアラームの設定を行うことができます。AWS で SQL Server ワークロードを実行している場合は、詳細なモニタリングを有効にして CloudWatch カスタムメトリクス
Amazon EBS の SSD ストレージコストも、割り当てられたキャパシティによって異なります。次の表は、さまざまなボリュームタイプの比較を示しています。すべてのボリュームタイプに、1 TB のキャパシティと同様のパフォーマンス設定があります。
| ボリュームタイプ | 最大 IOPS (16 KiB I/O) | 最大スループット (128 KiB I/O) | 1TB あたりの料金 | コスト削減率 |
|---|---|---|---|---|
| gp2 | 3,000 | 250 | 102.40 USD | |
| gp3 | 3,000 | 250 | 86.92 USD | 15% |
| io1 | 16,000 | 500 | 1,168 USD | |
| io2 | 16,000 | 500 | 1,168 USD | |
| gp3 | 16,000 | 500 | 146.92 USD | 87% |
| io2bx | 16,000 | 4,000 | 1,168 USD | |
| gp3 | 16,000 | 1,000 | 181.92 USD | 84% |
注記
上記の表のパフォーマンスとコストのメトリクスは、AWS 料金見積りツール からの見積もり
Amazon EBS SSD gp3 ボリュームは、低コストで優れたパフォーマンスを提供します。16,000 未満の IOPS、500 MiBps 未満のスループットを必要とするワークロードで、io1 または io2 ボリュームよりも gp3 ボリュームを選択した場合、最大 87% 節約できます。
io2 Block Express (io2BX) ボリュームは、通常の io2 ボリュームよりも優れたパフォーマンスを提供します。16,000 IOPS では、io1 または io2 ボリュームは 500 MiBps のスループットしか対応できませんが、io2BX ボリュームには最大 4,000 MiBps のスループットを設定できます。io1 および io2 ボリュームと比較すると、io2BX ボリュームは、まったく同じ料金で 16,000~64,000 IOPS で 4 倍を超えるスループットを提供します。通常の io2 ボリュームは、io2BX 対応の EC2 インスタンスにアタッチすることで、io2BX ボリュームに変換できます。io2BX 対応 EC2 インスタンスのリストについては、Amazon EBS ドキュメントの「Provisioned IOPS SSD volumes」を参照してください。新しいストレージをデプロイする前に、AWS 料金見積りツール
Amazon EBS の一般的な SSD コスト最適化
保存する内容を評価し、適切なストレージタイプとクラスを使用していることを確認することをお勧めします。例えば、Amazon S3 は、SQL Server バックアップに最適な優れたプライスポイント、組み込みライフサイクルポリシー、レプリケーションオプションを提供します。SQL Server 2022 は Amazon S3 に直接バックアップできますが、以前のバージョンの SQL Server はネイティブローカルバックアップに依存しています。古いバージョンの SQL Server を実行している場合は、Amazon EBS HDD ボリュームにバックアップしてから、そのバックアップを Amazon S3 にコピーすることを検討してください。このソリューションでは、バックアップに gp3 ボリュームを使用する場合と対照的に、53% 節約できます。
次の表は、Amazon EBS gp3、Amazon EBS HDD st1、および Amazon S3 上の 1 TB のストレージの料金差を示しています。
| ストレージタイプ | 容量 | 月額料金 |
|---|---|---|
| EBS gp3 500 MiBps | 1 TB | 96.92 USD |
| EBS st1 バースト 500 MiBps | 46.08 USD | |
| S3 Standard | 23.55 USD | |
| S3 Standard (低頻度アクセス) | 12.80 USD | |
| S3 Glacier Deep Archive | 1.03 USD |
注記
上記の表のコストのメトリクスは、AWS 料金見積りツール の見積もり
以下を検討することをお勧めします。
-
詳細なモニタリングを有効にし、CloudWatch カスタムメトリクスをデプロイして、ストレージのパフォーマンス要件を正確にキャプチャします。
-
Amazon EBS ストレージを gp2 から gp3 にアップグレードして、コストを削減し、柔軟性を高め、パフォーマンスを向上させます。
-
Amazon EBS ストレージを io1 から io2 にアップグレードして、耐久性とパフォーマンスの柔軟性を高めます。
-
耐久性とパフォーマンスを向上させるために、可能であれば io1 または io2 の代わりに io2BX を使用します。
-
キャパシティ要件と高パフォーマンスボリュームのコストを削減するために、ストレージを選択するときは種々の組み合わせを検討してください。例えば、ルートボリューム (オペレーティングシステム)、SQL Server のインストール、システムデータベース (tempdb を除く)、およびパフォーマンスの低いユーザーデータベースには低コストの gp3 ボリュームを使用できます。これにより、io2 ボリュームのキャパシティとコストを削減できます。io2 ボリュームは、高パフォーマンスユーザーデータベース専用にすることができます。
-
AWS で SQL Server データベースをホストする場合は、データベースごとに複数の SQL Server データファイルを使用することをお勧めします。これにより、読み取り/書き込みワークロードを複数のボリュームに分散できるため、ボリュームあたりのパフォーマンスとキャパシティの要件が軽減され、結果としてコストを削減できます。
-
本番ワークロードが io1 や io2/io2BX などの高パフォーマンスストレージを必要とする場合でも、コストを削減するために非本番ワークロードには gp3 ボリュームの使用を検討してください。
-
ストレージ使用率を経時的に追跡および傾向分析して、使用量の急増や予期しないコストを容易に特定します。
-
実際の使用率に基づいて EBS ボリュームをスケールアップまたはスケールダウンするための推奨事項を取得するには AWS Compute Optimizer
を使用します。 -
AWS の伸縮性を使用して、Amazon EBS の SSD ボリュームのパフォーマンスとキャパシティのニーズを調整します。オンプレミス環境とは異なり、将来のワークロード用にストレージのパフォーマンスとキャパシティを過剰にプロビジョニングする必要はありません。データベースをオンラインに保ちながら、既存の SQL Server ワークロードを AWS に移行し、必要に応じてパフォーマンスやキャパシティを調整できます。
その他のリソース
-
「Amazon EBS volume types」(Amazon EBS ドキュメント)
-
「Amazon Elastic Block Store (Amazon EBS)」(Amazon EBS ドキュメント)
-
「Provisioned IOPS SSD volumes」(Amazon EBS ドキュメント)
-
「EC2 インスタンスの SSD インスタンスストアボリューム」 (Amazon EC2 ドキュメント)
-
「Amazon CloudWatch metrics for Amazon EBS」(Amazon EBS ドキュメント)
-
「Specifications for Amazon EC2 storage optimized instances」(Amazon EC2 ドキュメント)
-
「Protect your SQL Server workloads using NetApp SnapCenter with Amazon FSx for NetApp ONTAP
」(AWS ストレージブログ) -
「Amazon EC2 よくある質問
」(AWS 製品ページ)