

# Amazon RDS for SQL Server 上 的 tempdb 数据库的实例存储支持。
<a name="SQLServer.InstanceStore"></a>

*实例存储*为数据库实例提供临时性块级存储。此存储位于已物理附加到主机的磁盘上。这些磁盘具有基于固态硬盘 (SSD) 的非易失性存储规范(NVMe) 实例存储。此存储针对低延迟、极高随机 I/O 性能和高速连续读取吞吐量进行了优化。

与基于 Amazon EBS 的标准存储相比，将 `tempdb` 数据文件和 `tempdb` 日志文件放置于实例存储之上可实现更低的读写延迟。

**注意**  
SQL Server 数据库文件和数据库日志文件不会放置于实例存储之上。

## 启用实例存储
<a name="SQLServer.InstanceStore.Enable"></a>

当 RDS 预置具有以下实例类之一的数据库实例时，会自动将 `tempdb` 数据库放置到实例存储中：
+ db.m5d
+ db.r5d
+ db.x2iedn

要启用实例存储，请执行下列操作之一：
+ 使用这些实例类型其中之一创建 SQL Server 数据库实例。有关更多信息，请参阅“[创建 Amazon RDS 数据库实例](USER_CreateDBInstance.md)”。
+ 修改现有 SQL Server 数据库实例以使用其中一个实例。有关更多信息，请参阅“[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)”。

在支持其中一种或多种实例类型的所有 AWS 区域均可使用实例存储。有关 `db.m5d` 和 `db.r5d` 实例类的更多信息，请参阅 [数据库实例类](Concepts.DBInstanceClass.md)。有关 Amazon RDS for SQL Server 支持的实例类的更多信息，请参阅 [Microsoft SQL Server 的数据库实例类支持](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`)时，默认情况下，`templog.ldf` 的初始大小为 8 MB，而 `tempdb.mdf` 的初始大小为实例存储容量的 80％ 或更多。存储容量的 20％ 或 200 GB（以较低者为准）可以免费作为初始大小。多个 `tempdb` 数据文件均匀分配 80％ 的磁盘空间，而日志文件的初始大小始终为 8 MB。

例如，如果将数据库实例类从 `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` 数据和日志数据块可能会经常发生变化，具体取决于工作负载。这可以大大增加数据库快照的大小。

`tempdb` 位于实例存储上时，快照不包括临时文件。这意味着与仅限 EBS 的存储相比，快照大小更小，占用的免费备份分配更少。

## 磁盘已满错误
<a name="SQLServer.InstanceStore.DiskFull"></a>

如果您使用了实例存储中的所有可用空间，则可能会收到以下等错误：
+  The transaction log for database 'tempdb' is full due to 'ACTIVE\$1TRANSACTION'.(由于“ACTIVE\$1TRANSACTION”，数据库“tempdb”的事务日志已满。)
+ Could not allocate space for object 'dbo.SORT temporary run storage: 140738941419520' in database 'tempdb' because the 'PRIMARY' filegroup is full. (由于 “PRIMARY”文件组已满，无法为数据库“tempdb”中的对象“dbo.SORT temporary run storage: 140738941419520”分配空间。） Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup. (通过删除不需要的文件、删除文件组中的对象、向文件组添加其他文件或为文件组中的现有文件设置自动增长来增加磁盘空间。)

实例存储已满时，您可以执行以下一项或多项操作：
+ 调整工作负载或使用方式 `tempdb`。
+ 向上扩展以使用具有更多 NVMe 存储空间的数据库实例类。
+ 停止使用实例存储，然后使用仅限 EBS 存储的实例类。
+ 通过为 EBS 卷上的 `tempdb` 添加辅助数据或日志文件来使用混合模式。

## 删除实例存储
<a name="SQLServer.InstanceStore.Disable"></a>

要删除实例存储，请修改 SQL Server 数据库实例以使用不支持实例存储的实例类型，如 db.m5、db.r5 或 db.x1e。

**注意**  
删除实例存储时，会将临时文件移至 `D:\rdsdbdata\DATA` 目录，并将其大小缩减到 8 MB。