即使在 SQL 2008/R2 或 SQL 2012 的情况下,为 TempDB 启用跟踪标志 1118(作为服务启动参数)以减少与混合范围分配相关的争用有很多优点。为什么在世界上它被禁用开箱即用默认的 SQL 服务器配置?
3 回答
对 TF 1118 的误解。阅读关于为什么在 2005 年和 2008 年不需要那么多跟踪标志的段落?. 还要考虑到有很多工作负载很少或根本不使用临时表(例如,大多数设计良好的 OLTP 工作负载),其中一些工作负载可能会受到 tempdb 中扩展分配的影响。
使用 TF-1118。在此跟踪标志下,SQL Server 为每个 tempdb 对象分配完整范围,从而消除了 SGAM 页面上的争用。这是以浪费 tempdb 中的一些磁盘空间为代价的。此跟踪标志自 SQL Server 2000 以来一直可用。随着 SQL Server 2005 中 tempdb 对象缓存的改进,分配结构中的争用应该会大大减少。如果您在 SGAM 页面中看到争用,您可能需要使用此跟踪标志。缓存的 tempdb 对象可能并不总是可用。例如,缓存的 tempdb 对象在与它们关联的查询计划被重新编译或从过程缓存中删除时被破坏。
所以它需要更多的空间,这可能会损害某些工作负载。
T1118: 删除服务器上的大多数单页分配,减少 SGAM 页面上的争用。创建新对象时,默认情况下,前八页是从不同的扩展区(混合扩展区)分配的。之后,当需要更多页面时,会从同一范围(统一范围)分配这些页面。SGAM 页面用于跟踪这些混合范围,因此在发生大量混合页面分配时很快就会成为瓶颈。此跟踪标志在创建新对象时从同一范围分配所有八个页面,从而最大限度地减少扫描 SGAM 页面的需要。有关详细信息,请参阅此 Microsoft 支持文章。
注意:从 SQL Server 2016 (13.x) 开始,此行为由 ALTER DATABASE 的 SET MIXED_PAGE_ALLOCATION 选项控制,跟踪标志 1118 无效。有关详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)。
范围:仅限全球