この投稿からさらに洞察を得ましたが、変数テーブルの最近の使用とそれに関連する tempdb の増加を十分に理解するのにまだ苦労しています。
私は最近、ストアド プロシージャとテーブル値関数の両方で変数テーブルを使用しています。変数テーブル v のローカル/グローバル一時テーブルの使用は、私が経験しているより大きな課題に影響を与える可能性のある領域の 1 つです。
このタイプの一時テーブルを使用して以来、tempdb は約 50 GB 以上の領域に成長し、exec sp_spaceused @updateusage=true
次を使用してテーブルを検査するdatabase_size: 51935.13MB
unallocated_space: 51908.80MB
と、DB の内容をチェックすると、一時テーブルまたはシステム テーブルが存在しません。ref の場合、tempdb.ldf は非常に小さいです。
を使用してセッションの使用状況を調べるexec sp_who
と、接続が適切に閉じられないという問題が発生している可能性があると思われる睡眠を示す複数の行も表示されます。
さまざまな投稿や SO を読んだ結果、一般的なコンセンサスは tempdb と関連ファイルの縮小を試みないことであり、実際には、より断片化されたデータ ストレージに移動するよりも、根本的な問題を解決したいと考えています。
私の既存のアプローチがtempdbの成長に影響を与える可能性がある理由と、ローカル/グローバル一時テーブルの使用がより適切かどうかについてのアドバイスはありますか.
tempdb自体については、ストレージは安価ですが、この増加を確実に抑える必要があるため、メンテナンスに関するアドバイス(DBを複数のファイルに分割する、縮小する可能性がある、DBを別のドライブに移動する)などをいただければ幸いです。