(従来の理由により) SQL 2005 (9.0.5266) を実行し、TEXT 列 (さまざまなデータ型の他のいくつかの列と共に) を含む運用システムにテーブルがあります。
突然 (1 週間前から)、この 1 つのテーブルのサイズが 1 日あたり 10 ~ 15 GB ずつ直線的に増加していることに気付きました (以前は常に一定のサイズのままでした)。テーブルはメッセージング システムのキューであり、テーブル内のデータは数秒ごとに完全に更新されます。いつでも 0 行から約 1000 行の範囲である可能性がありますが、メッセージが挿入されて送信されると急速に変動します (その時点で削除されます)。
成長が始まった日に変更されたものは何も見つからないため、この段階では明らかな潜在的な原因は特定されていません.
「明らかな」原因の 1 つは TEXT 列であるため、大量の値が現在格納されているかどうかを確認しましたが、(DATALENGTH を使用して) 約 32k を超える単一の行は見つかりませんでした。CHECKDB を実行し、スペース使用量を更新し、すべてのインデックスを再構築しました。サイズは何も縮小されませんでした (CHECKDB はエラーを表示しませんでした)。
sys.allocation_units をクエリしたところ、サイズの増加は間違いなく LOB_DATA です (これは、total_pages と used_pages が一定の割合で一緒に増加していることを示しています)。
昨夜、データベースのサイズを縮小するために、問題のテーブル (幸いなことに、アプリケーションによってビューを介して参照されます) と一緒に新しいテーブルを作成し、古いテーブルを削除して、新しいテーブルの名前を変更しました。昨夜、スペースの問題を軽減し、今日さらに調査するための危険なテーブルのバックアップがあったという事実に安心して出発しました。ただし、今朝、テーブルのサイズはすでに最大 14 GB (および増加) になっていますが、テーブルには通常 ~500 行しかなく、MAX(DATALENGTH(text_column)) は約 35k しか示していません。
この「暴走」の成長を引き起こしている可能性のあるものについてのアイデア、またはスペースを正確に使用しているものについてより多くの情報を取得するために試行またはクエリできるその他のアイデアはありますか?
乾杯、デイブ