使用跟踪标志 2453 提高表变量性能



我们在SQL Server 2016中启用了跟踪标志2453(表变量性能),它修复了性能问题。

在 SQL Server 级别启用此跟踪标志有什么缺点吗?

请让我知道你对此的看法。

首先,您应该指定此标志的作用:

您可以打开跟踪标志 2453 以允许触发表变量 当更改了足够多的行时重新编译。这可能允许 查询优化器以选择更高效的计划。

修复: 在 SQL Server2012 或 SQL Server 2014 中使用表变量时性能不佳

现在你可以自己弄清楚,可能的缺点是什么。

如果您的服务器上的许多查询使用表变量,这是 OLTP 系统,并且您有太多的重新编译,则此 TF 可能会使情况变得更糟。

您可以在此处找到相同的内容:使用跟踪标志 2453 提高表变量性能

是否应始终使用跟踪标志 2453 或 OPTION(重新编译),如果您 使用表变量?或。但我倾向于"视情况而定"。 Microsoft说">跟踪标志必须谨慎使用,因为它 可以增加查询重新编译的次数,这可能花费更多 通过更好的查询优化节省成本"。

很久以前,我记得我的开发人员曾经使用表变量而不是临时表,因为表变量存储在内存中,而临时表存储在 tempdb 中,内存应该更快。 即使这是真的,当时表变量没有统计信息,这导致了表存储超过 1 行的性能问题。 不确定这是否已经改变,但可能值得一看,看看是否可以更好地针对变量使用临时表并摆脱跟踪标志,即使支持,我也宁愿根本不使用它们。

最新更新