テーブル内の実際のデータが約320 MiBである SQL Server データベースに奇妙な状況があります。これはDATALENGTH
、すべての列を合計することによって決定されます。これにより、断片化、インデックス スペース、およびその他の SQL Server の内部オーバーヘッドが無視されます。ただし問題は、テーブルのサイズが約40 GiBであり、挿入されたバイトまたは行単位のデータ量に非常に不釣り合いに、驚くべき速さで成長していることです。
関数を使用sys.dm_db_index_physical_stats
して物理データを確認したところ、約 40 GiB のデータがLOB_DATA
.
テーブルの内容を構成する 320 MiB の大部分はntext
. さて、私の質問は、およそ 310 MiB のデータLOB_DATA
しかないのに、どうして SQL Server が 40 GiB を割り当てたのかということです。ntext
列を に変換すると問題は解決しnvarchar(max)
ますか? ページが再利用されない原因となっているストレージ エンジンの仕様はntext
ありますか? 行われている変更の量に関して、なぜそれほど不釣り合いな速度で成長しているのでしょうか?LOB_DATA
LOB_DATA