26.1.26

Миф: Сжатие файла данных не влияет на производительность

Автор: Paul Randal, A SQL Server DBA myth a day: (9/30) data file shrink does not affect performance

Сжатие файла данных не влияет на производительность.

Ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха! <фыркает>

<вытирает слёзы с глаз, пытается сфокусироваться на экране ноутбука, убирает слюну с клавиатуры>

ЛОЖЬ

Единственный случай, когда сжатие файла данных не повлияет на производительность, — это если вы используете параметр WITH TRUNCATEONLY и в конце сжимаемого файла есть свободное пространство.

Сжатие влияет на производительность во время своего выполнения. Оно перемещает огромные объёмы данных, генерирует операции ввода-вывода, полностью протоколирует всё, что делает, и расходует ресурсы процессора.

Сжатие влияет на производительность после своего выполнения. Весь этот журнал транзакций должен быть архивирован, доставлен (log shipped), отзеркален, просканирован репликацией транзакций и так далее. И если файл данных снова будет расти, новое пространство снова придётся заполнять нулями (если только у вас не включена мгновенная инициализация файлов).

Хуже всего то, что сжатие вызывает сильную фрагментацию индексов — что губительно для производительности интервальных сканирований.

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

Ознакомьтесь с этой записью в блоге, где я вдаюсь в подробности и объясняю альтернативу использованию сжатия: Почему не стоит сжимать файлы данных, и с этой, где рассказывается, как правильно управлять размерами файлов данных: Importance of data file size management. А ещё вот эту — просто потому что она классная (безопасно для работы): TGIF Time Warp.

И помните:

  • Сжатие файла данных — зло
  • Команда DBCC SHRINKDATABASE — ещё большее зло
  • Автосжатие — самое большое зло

Сжатие — просто скажите «нет». С помощью правильного обучения и эффективного консультирования мы можем раз и навсегда избавить мир от этой ужасной напасти.


Комментариев нет:

Отправить комментарий