为 Azure SQL 托管实例配置 tempdb 设置
适用于:Azure SQL 托管实例
本文介绍如何为 Azure SQL 托管实例配置 tempdb
设置。
Azure SQL 托管实例允许配置以下内容:
tempdb
文件的数目tempdb
文件的增长增量tempdb
的大小上限
重启、更新实例后或如果发生故障转移,tempdb
设置将保留。
概述
tempdb
是 Azure SQL 托管实例附带的默认系统数据库之一。 tempdb
的结构与任何其他用户数据库结构相同;不同之处在于,由于 tempdb
用于非持久存储,因此极少记录事务。
tempdb
无法删除、分离、脱机、重命名和还原。 尝试上述任一操作将返回错误。 tempdb
在每次启动服务器实例时重新生成,并且在上一会话期间可能已在 tempdb
中创建的任何对象在服务重启时或者实例更新管理操作或故障转移后,不会保留。
tempdb
中的工作负载与其他用户数据库中的工作负载不同;对象和数据经常被创建和销毁,并发性非常高。 每个托管实例只有一个 tempdb
。 即使有多个数据库和应用程序连接到实例,它们也使用相同的 tempdb
数据库。 当服务尝试在大量使用的 tempdb
中分配页面时,可能会遇到争用。 根据争用程度,涉及 tempdb
的查询和请求可能会变得无响应。 这就是 tempdb
对服务性能至关重要的原因。
tempdb
文件的数目
增加 tempdb
数据文件的数量会为每个数据文件创建一个或多个 GAM 和 SGAM 页面,这有助于提高 tempdb
并发性并减少 PFC 页面争用。 但是,增加 tempdb
数据文件的数量可能会对性能产生其他影响,因此请在生产中实现之前进行全面测试。
默认情况下,Azure SQL 托管实例创建 12 个 tempdb
数据文件和 1 个 tempdb
日志文件,但可以修改此配置。
修改 tempdb
文件数具有以下限制:
- 新文件的逻辑名称不区分大小写,最多包含 16 个字符,且无空格。
tempdb
文件的数量上限是 128。
注意
添加新文件后,无需重启服务器;但是,更空的文件将被赋予更高的优先级,并且用于分配页面的轮循机制算法将丢失,直到系统重新均衡。
可以使用 SQL Server Management Studio (SSMS) 和 Transact-SQL (T-SQL) 更改 Azure SQL 托管实例中 tempdb
的文件数。
可以使用 SQL Server Management Studio (SSMS) 来修改 tempdb
文件数。 为此,请执行下列步骤:
连接到 SSMS 中的托管实例。
在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。
右键单击
tempdb
并选择“属性”。选择“选择页面”下的“文件”以查看现有
tempdb
文件数。若要添加文件,请选择“添加”,然后在行中提供有关新数据文件的信息。
若要删除
tempdb
文件,请从数据库文件列表中选择要删除的文件,然后选择“删除”。
增长增量
tempdb
文件增长可能会对使用 tempdb
的查询产生性能影响。 因此,tempdb
数据文件增长增量过小可能会导致盘区碎片,而增量太大可能会导致增长缓慢,如果没有足够的空间进行增长,还会导致增长失败。 tempdb
文件增长增量的最佳值取决于工作负载。
对于 tempdb
数据文件,SQL 托管实例的默认增长增量为 254 MB,对于 tempdb
日志文件,默认增长增量为 64 MB,但可以配置增长增量来适应你的工作负载并优化性能。
考虑以下情况:
- 文件增长参数支持
int_growth_increment
采用以下单位:KB、MB、GB、TB 和 %。 - 所有
tempdb
数据文件的增长增量都应相同,否则分配页面的轮循机制算法可能会受到影响。
可以使用 SQL Server Management Studio (SSMS) 和 Transact-SQL (T-SQL) 来更改 tempdb
文件的增长增量。
可以使用 SQL Server Management Studio (SSMS) 来修改 tempdb
文件的增长增量。 为此,请执行下列步骤:
连接到 SSMS 中的托管实例。
在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。
右键单击
tempdb
并选择“属性”。选择“选择页面”下的“文件”以查看现有
tempdb
文件数。选择数据文件旁边的省略号 (...) 以打开“更改自动增长属性”对话框窗口。
选中“启用自动增长”旁边的框,然后通过指定文件增长值(以 % 或 MB 为单位)来修改自动增长设置。
选择“确定”保存设置。
最大大小
tempdb
大小是所有 tempdb
文件的大小总和。 tempdb
文件大小是为该 tempdb
文件分配的(清零的)空间。 所有 tempdb
文件的初始文件大小为 16 MB,即实例重启或故障转移时所有 tempdb
文件的大小。 tempdb
数据文件的已用空间达到文件大小后,所有 tempdb
数据文件都会按其配置的增长增量自动增长。
tempdb
已用空间是所有 tempdb
文件已用空间的总和。 tempdb
文件已用空间等于该 tempdb
文件大小中非零信息占用的那部分大小。 tempdb
已用空间和 tempdb
可用空间的总和等于 tempdb
的大小。
可以使用 T-SQL 来确定 tempdb
文件的当前已用空间和可用空间。
若要获取 tempdb
数据文件的已用空间、可用空间和大小,请运行以下命令:
USE tempdb
SELECT SUM((allocated_extent_page_count)*1.0/128) AS TempDB_used_data_space_inMB,
SUM((unallocated_extent_page_count)*1.0/128) AS TempDB_free_data_space_inMB,
SUM(total_page_count*1.0/128) AS TempDB_data_size_inMB
FROM sys.dm_db_file_space_usage
以下屏幕截图显示了示例输出:
若要获取 tempdb
日志文件的已用空间、可用空间和大小,请运行以下命令:
USE tempdb
SELECT used_log_space_in_bytes*1.0/1024/1024 AS TempDB_used_log_space_inMB,
(total_log_size_in_bytes- used_log_space_in_bytes)*1.0/1024/1024 AS TempDB_free_log_space_inMB,
total_log_size_in_bytes*1.0/1024/1024 AS TempDB_log_size_inMB
FROM sys.dm_db_log_space_usage
以下屏幕截图显示了示例输出:
tempdb
的大小上限是一种限制,超出此限制后,tempdb
无法进一步增长。
SQL 托管实例的 tempdb
大小上限具有以下限制:
- 在“常规用途”服务层级中,
tempdb
的大小上限为 24 GB/vCore (96-1920 GB),日志文件的大小上限为 120 GB。 - 在“业务关键”服务层级中,
tempdb
与其他数据库争夺资源,因此在tempdb
与其他数据库之间共享预留存储。tempdb
日志文件的大小上限为 2 TB。
tempdb
文件会一直增长,直到达到服务层级允许的最大限制,或者达到手动配置的最大 tempdb
文件大小允许的最大限制。
可以使用 SQL Server Management Studio (SSMS) 和 Transact-SQL (T-SQL) 来更改 tempdb
文件的大小上限。
若要确定 SSMS 中的当前 tempdb
大小上限,请执行以下步骤:
- 连接到 SSMS 中的托管实例。
- 在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。
- 右键单击
tempdb
并选择“属性”。 - 在“常规”页上,检查“数据库”下的“大小”值,以确定最大 tempdb 大小。 值
-1
指示 tempdb 的大小上限不受限制。
若要更改 SSMS 中的当前 tempdb
大小上限,请执行以下步骤:
- 连接到 SSMS 中的托管实例。
- 在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。
- 右键单击
tempdb
并选择“属性”。 - 选择“选择页面”下的“文件”以查看现有
tempdb
文件数。 - 选择数据文件旁边的省略号 (...) 以打开“更改自动增长属性”对话框窗口。
- 通过更改“最大文件大小”下的值来修改
tempdb
的大小上限设置。 - 选择“确定”保存设置。
tempdb 限制
下表定义了各种 tempdb
配置设置的限制:
配置设置 | 值 |
---|---|
tempdb 文件的逻辑名称 |
最多 16 个字符 |
tempdb 文件的数目 |
最多 128 个文件 |
tempdb 文件的默认数目 |
13(1 个日志文件 + 12 个数据文件) |
tempdb 数据文件的初始大小 |
16 MB |
tempdb 数据文件的默认增长增量 |
256 MB |
tempdb 日志文件的初始大小 |
16 MB |
tempdb 日志文件的默认增长增量 |
64 MB |
初始最大 tempdb 大小 |
-1(无限制) |
tempdb 的大小上限 |
可达存储大小 |
后续步骤
- 若要了解如何创建第一个托管实例,请参阅快速入门指南。
- 有关功能和比较列表,请参阅 SQL 常用功能。
- 有关 VNet 配置的详细信息,请参阅 SQL 托管实例 VNet 配置。
- 有关创建托管实例以及从备份文件还原数据库的快速入门,请参阅创建托管实例。
- 有关使用 Azure 数据库迁移服务进行迁移的教程,请参阅使用数据库迁移服务进行 SQL 托管实例迁移。
- 有关定价信息,请参阅 SQL 数据库定价。