症状
假设你要在 Microsoft SQL Server 2016 或2017中创建或删除大量临时表。 某些应用程序工作负荷会使临时表的缓存失效。 例如,你正在创建临时表,然后创建 ALTER TABLE 或 CREATE INDEX ,这将使 临时表的缓存无效。 在这种情况下,你可能会遇到以下问题:
-
系统目录 sysobjvalues 上的 tempdb 中的数据定义语言(DDL)争用和大量等待 PAGELATCH_EX 的会话,PAGELATCH_SH 并 PAGELATCH_UP 等待类型发生。
-
当条目计数超过4000时,此情况也会影响工作负荷。 但是,这可能会有所不同,具体取决于工作负荷。 请参阅以下示例:
SELECT [name], [type], [entries_count], [entries_in_use_count]
FROM sys.dm_os_memory_cache_counters
WHERE [type] = N'CACHESTORE_TEMPTABLES'
姓
处理器类型
entries_count
entries_in_use_count
& 表变量的临时表
CACHESTORE_TEMPTABLES
<计数>
<计数>
解决方案
在 SQL Server 的以下累积更新中修复了此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。