Назад | Перейти на главную страницу

SQL Server: почему файлы .MDF и .LDF увеличиваются до 1 ГБ + для базы данных, содержащей 1 таблицу всего из 10 строк

Почему .MDF и .LDF файлы увеличиваются до 1 ГБ + для базы данных, содержащей 1 таблицу всего из 10 строк?

База данных возникла из 2 МБ .bak файл, и в него не было добавлено никаких дополнительных данных.

MDF мог быть создан как 1 ГБ - или в какой-то момент он содержал намного больше, чем 10 строк. MDF обычно не уменьшаются в размере при удалении из них данных. Чтобы уменьшить размер, вам почти придется создать новую базу данных, убедиться, что ее начальный размер установлен на низком уровне, а затем скопировать данные из этой таблицы в новую базу данных.

LDF (файл журнала транзакций) будет расти, если вы запустите много операторов SQL, которые необходимо регистрировать, например вставки, обновления, удаления и другие вещи. Регулярно используя резервные копии журналов, вы можете сохранить небольшой размер файла журнала транзакций и переключить базу данных на просто Модель восстановления (вместо Full) также существенно поможет.

Одна строка с одним столбцом может иметь 2 ГБ.

Но даже если таблица действительно мала, текущий размер не свидетельствует о прошлой истории. После удаления 100 миллионов строк таблица может иметь 10 строк. Журнал сохранит всю активность, пока не будет создана резервная копия. Базы данных не сжимаются после роста, и их не следует заставлять открываться в чрезвычайных обстоятельствах.

Вы храните большие двоичные объекты в своей базе данных? Blob (большие двоичные объекты обычно потребляют память больше, чем другие вещи.

Как говорили многие, существует множество причин, по которым ваши физические файлы могут расти, даже если вы храните очень мало данных в своей базе данных.

Если вам нужно и / или вы хотите, вы можете уменьшить их до необходимого минимума. Сначала сделайте резервную копию журнала базы данных (это сократит журналы транзакций), затем используйте DBCC SHRINKDATABASE команда (или эквивалентная операция графического интерфейса в Management Studio).

Не отвечает на ваш вопрос, но если вы можете повторить восстановление, вы можете использовать Profiler, чтобы «наблюдать», какие процессы касаются данной базы данных.