現象
Microsoft SQL Server 2016 または2017で、多数の一時テーブルを作成または削除していることを前提としています。 一部のアプリケーションのワークロードは、一時テーブルのキャッシュを無効にします。 たとえば、一時テーブルを作成してから、ALTER TABLE または CREATE INDEX を作成して、一時テーブルのキャッシュ を無効 にします。 このような状況では、次の問題が発生することがあります。
-
システムカタログの tempdb でのデータ定義言語 (DDL) の競合、および PAGELATCH_EX、PAGELATCH_SH、PAGELATCH_UP wait 型で待機している多数のセッションの競合が発生します。
-
この状況は、エントリ数が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 が使用する 用語について説明します。