配置 tempdb 设置 您所在的位置:网站首页 数据库自动增长命令 配置 tempdb 设置

配置 tempdb 设置

2024-07-09 12:00| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

为 Azure SQL 托管实例配置 tempdb 设置 项目07/14/2023

适用于: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) Transact-SQL (T-SQL)

可以使用 SQL Server Management Studio (SSMS) 来修改 tempdb 文件数。 为此,请执行下列步骤:

连接到 SSMS 中的托管实例。

在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。

右键单击 tempdb 并选择“属性”。

选择“选择页面”下的“文件”以查看现有 tempdb 文件数。

若要添加文件,请选择“添加”,然后在行中提供有关新数据文件的信息。

若要删除 tempdb 文件,请从数据库文件列表中选择要删除的文件,然后选择“删除”。

可以使用 Transact-SQL (T-SQL) 来检查现有 tempdb 文件的数量,以及添加或删除文件。

若要计算所有现有 tempdb 文件的数量,请使用以下命令:

USE tempdb SELECT COUNT(*) TempDBFiles FROM sys.database_files

若要仅计算 tempdb 数据文件的数量,请使用以下命令:

USE tempdb SELECT COUNT(*) TempDBFiles FROM sys.database_files where type = 0

若要添加新的 tempdb 文件,请使用以下命令:

ALTER DATABASE tempdb ADD FILE (NAME = 'file_name')

若要删除现有 tempdb 文件,请使用以下命令:

ALTER DATABASE tempdb REMOVE FILE [file_name] 增长增量

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) Transact-SQL (T-SQL)

可以使用 SQL Server Management Studio (SSMS) 来修改 tempdb 文件的增长增量。 为此,请执行下列步骤:

连接到 SSMS 中的托管实例。

在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。

右键单击 tempdb 并选择“属性”。

选择“选择页面”下的“文件”以查看现有 tempdb 文件数。

选择数据文件旁边的省略号 (...) 以打开“更改自动增长属性”对话框窗口。

选中“启用自动增长”旁边的框,然后通过指定文件增长值(以 % 或 MB 为单位)来修改自动增长设置。

选择“确定”保存设置。

使用以下 T-SQL 命令修改 tempdb 数据文件的增长增量:

ALTER DATABASE tempdb ADD FILE (NAME = 'file_name', FILEGROWTH = int_growth_increment [KB|MB|GB|TB|%]) 最大大小

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 文件的大小上限。

SQL Server Management Studio (SSMS) Transact-SQL (T-SQL)

若要确定 SSMS 中的当前 tempdb 大小上限,请执行以下步骤:

连接到 SSMS 中的托管实例。 在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。 右键单击 tempdb 并选择“属性”。 在“常规”页上,检查“数据库”下的“大小”值,以确定最大 tempdb 大小。 值 -1 指示 tempdb 的大小上限不受限制。

若要更改 SSMS 中的当前 tempdb 大小上限,请执行以下步骤:

连接到 SSMS 中的托管实例。 在“对象资源管理器”中展开“数据库”,然后展开“系统数据库”。 右键单击 tempdb 并选择“属性”。 选择“选择页面”下的“文件”以查看现有 tempdb 文件数。 选择数据文件旁边的省略号 (...) 以打开“更改自动增长属性”对话框窗口。 通过更改“最大文件大小”下的值来修改 tempdb 的大小上限设置。 选择“确定”保存设置。

若要确定 tempdb 大小上限,请运行以下命令:

USE tempdb SELECT name, max_size FROM sys.database_files

若要获取总 tempdb 大小(以 MB 为单位),请运行以下命令:

USE tempdb SELECT (SUM(size)*1.0/128) AS TempDB_size_InMB FROM sys.database_files

以下屏幕截图显示了一个示例输出:

若要设置新 tempdb 数据文件的大小上限,请运行以下命令:

ALTER DATABASE tempdb ADD FILE (NAME = 'file_name', MAXSIZE = int_maxsize[KB|MB|GB|TB])

若要更改现有 tempdb 文件的大小上限,请运行以下命令:

ALTER DATABASE tempdb MODIFY FILE (NAME = file_name, MAXSIZE = int_maxsize[KB|MB|GB|TB]) 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 托管实例数据库性能进行的高级监视,请参阅使用 Azure SQL Analytics 监视 Azure SQL 托管实例。 有关定价信息,请参阅 SQL 数据库定价。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有