Почему увеличивается размер базы данных при обновлении таблицы в MSSQL

Почему увеличивается размер базы данных при обновлении таблицы в MSSQL?

Хочу понять на примере, чтобы понимать как прогнозировать объем необходимый серверу.

Есть база db1 в MSSQL 2019 с Recovery Mode - Simple В базе единственная таблица с 100 миллинов строк и с несколькими столбцами. Данные таблицы сжаты с помощью page compression. В несжатом виде таблица занимает 30ГБ, а в сжатом 6ГБ. Сама база тоже до минимум шринканута. В таблице для всех строк требуется сделать апдейт одного столбца (тип integer). Данный столбец не включен ни в один из индексов. При обновлении данного столбца update table1 set col10=randint() база данных начинает сильно разрастаться. При этом система показывает что и в лог файле и в самой базе есть свободное место и не мало. Больше 30%. Вопрос почему скл не использует это свободное место, а увеличивает для этого текущую базу? Что он записывает при обновлении в базу данных, то есть за счет каких данных она растет? И как прогнозировать рост базы данных в таком случае?


Ответы (0 шт):