

# Amazon RDS for SQL Server の tempdb データベースに対するインスタンスストアのサポート
<a name="SQLServer.InstanceStore"></a>

*インスタンスストア*は、DB インスタンスに一時ブロックレベルのストレージを提供します。このストレージは、ホストコンピュータに物理的にアタッチされたディスク上にあります。これらのディスクには、ソリッドステートドライブ (SSD) に基づく不揮発性メモリエクスプレス (NVMe) インスタンスストレージがあります。このストレージは、低レイテンシー、非常に高いランダム I/O パフォーマンス、高いシーケンシャル読み取りスループットを実現するために最適化されています。

`tempdb` データファイルと `tempdb` ログファイルをインスタンスストアに配置することで、Amazon EBS に基づく標準ストレージと比べて、読み取りおよび書き込みのレイテンシーを低く抑えることができます。

**注記**  
SQL Server データベースファイルとデータベースログファイルは、インスタンスストアに配置されません。

## インスタンスストアの有効化
<a name="SQLServer.InstanceStore.Enable"></a>

RDS が次のいずれかのインスタンスクラスを使用して DB インスタンスをプロビジョニングすると、`tempdb` データベースは自動的にインスタンスストアに配置されます。
+ db.m5d
+ db.r5d
+ db.x2iedn

インスタンスストアを有効にするには、次のいずれかの操作を行います。
+ これらのインスタンスタイプの 1 つを使用して SQL Server DB インスタンスを作成します。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。
+ 既存の SQL Server DB インスタンスを変更して、そのうちの 1 つを使用します。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

インスタンスストアは、これらのインスタンスタイプの 1 つ以上がサポートされているすべての AWS リージョンで使用できます。`db.m5d` と `db.r5d` インスタンスクラスの詳細については、「[ DB インスタンスクラス](Concepts.DBInstanceClass.md)」を参照してください。Amazon RDS for SQL Server でサポートされるインスタンスクラスの詳細については、[Microsoft SQL Server の DB インスタンスクラスのサポート](SQLServer.Concepts.General.InstanceClasses.md) を参照してください。

## ファイルの場所とサイズに関する考慮事項
<a name="SQLServer.InstanceStore.Files"></a>

インスタンスストアがないインスタンスでは、RDS は `tempdb` データとログファイルを `D:\rdsdbdata\DATA` ディレクトリに保存します。デフォルトでは、どちらのファイルも 8 MB から始まります。

インスタンスストアがあるインスタンスでは、RDS は `tempdb` データとログファイルを `T:\rdsdbdata\DATA` ディレクトリに保存します。

`tempdb` にデータファイル (`tempdb.mdf`) とログファイル (`templog.ldf`) が 1 つしかない場合、`templog.ldf` はデフォルトでは 8 MB から始まり、`tempdb.mdf` はインスタンスのストレージ容量の 80％以上から始まります。ストレージ容量の 20% または 200 GB のどちらか小さい方を、無料で起動できます。複数の `tempdb` データファイルは 80% のディスク領域を均等に分割しますが、ログファイルの初期サイズは常に 8 MB です。

例えば、DB インスタンスクラスを `db.m5.2xlarge` から `db.m5d.2xlarge` に変更すると、`tempdb` データファイルのサイズはそれぞれ 8 MB から合計 234 GB に増加します。

**注記**  
インスタンスストア (`tempdb`) の `T:\rdsdbdata\DATA` データとログファイルに加えて、データボリューム (`tempdb`) に追加の `D:\rdsdbdata\DATA` データとログファイルを作成することもできます。これらのファイルの初期サイズは常に 8 MB です。

## バックアップに関する考慮事項
<a name="SQLServer.InstanceStore.Backups"></a>

バックアップを長期間保持する必要がありますが、時間の経過とともにコストがかかる場合があります。`tempdb` データブロックとログブロックは、ワークロードに応じて非常に頻繁に変更されることがあります。これにより、DB スナップショットのサイズが大幅に増加する可能性があります。

`tempdb` がインスタンスストアにある場合、スナップショットに一時ファイルは含まれません。つまり、EBS のみのストレージと比べて、スナップショットのサイズが小さくなり、空いたバックアップ割り当ての使用量が少なくなります。

## ディスクがいっぱいになるエラー
<a name="SQLServer.InstanceStore.DiskFull"></a>

インスタンスストア内の使用可能な領域をすべて使用すると、次のようなエラーが表示されることがあります。
+ データベース「tempdb」のトランザクションログは「ACTIVE\$1TRANSACTION」のため、いっぱいになりました。
+ PRIMARY」ファイルグループがいっぱいであるため、データベース「tempdb」のオブジェクト「dbo.SORT の一時実行ストレージ: 140738941419520」に領域を割り当てられませんでした。不要なファイルの削除、ファイルグループ内のオブジェクトの削除、ファイルグループへのファイルの追加、またはファイルグループ内の既存のファイルの自動拡張を有効に設定して、ディスク領域を作ります。

インスタンスストアがいっぱいになると、次の項目のうちから 1 つまたは複数を実行できます。
+ ワークロードや `tempdb` の使用方法を調整します。
+ より多くの NVMe ストレージを持つ DB インスタンスクラスを使用するように拡張します。
+ インスタンスストアの使用を停止し、EBS ストレージのみを持つインスタンスクラスを使用します。
+ EBS ボリューム上の `tempdb` のセカンダリデータまたはログファイルを追加して、混合モードを使用します。

## インスタンスストアの削除
<a name="SQLServer.InstanceStore.Disable"></a>

インスタンスストアを削除するには、インスタンスストアをサポートしないインスタンスタイプ (db.m5、db.r5、db.x1e など) を使用するように SQL Server DB インスタンスを変更します。

**注記**  
インスタンスストアを削除すると、一時ファイルは `D:\rdsdbdata\DATA` ディレクトリに移動され、8 MB に縮小されます。