Как эффективно использовать совместно shrinkdatabase, shrinkfile и rebuildindex?
Как эффективно использовать совместно shrinkdatabase, shrinkfile и rebuildindex ?
Периодиески сталкиваюсь с пробемой, чтобы база и файлы базы разрастаются. Вместо того чтобы использовать свободное место внутри базы, сервер запрашивает увеличивает размер файла базы данных, а вместе с ним и свободное пространство.
Как решение на переодической основе делаю шринк shrinkfile и shrinkdatabase, но при этих операциях ухудшается показатель фрагментации индексов. И если индексы сильно дефрагментированы, то шринк может оставить 40% свободного места в файле, что очень много в абсолютных величинах.
Вопрос как эффективно добиться того, чтобы и размер файлов базы данных был минимален и при этом индексы были бы максимально фрагментированы ? После оптимизации, некоторые базы данных планируется переводить в режим READONLY для архива.
Ответы (1 шт):
Для БД, в которых регулярно происходят crud-процессы с той же периодичностью можно делать rebuild index и обновлять статистику с той же регулярностью, но в моменты минимальной нагрузки на сервер. Т.е. если данные в бд "льются" постоянно, то ребилд лучше делать ночью один раз в сутки после окончания crud-процессов. Шринковать файлы и бд раз в неделю/месяц, но только если есть необходимость.
UPD: Возможно я некорректно выразился (плохой из меня "объяснитель"). Ещё раз
При ребилде индекса - старый индекс удаляется - после завершения операции место не вырастет. Ребилд- очень "тяжёлая" операция. Ребилд лучше делать в моменты минимальной нагрузки.
Адекватная замена ребилду - реорганизация индекса. Реорганизацию можно запускать днём и перезапускать её (если она была по каким-то причинам отменена) вплоть до достижения оптимальной фрагментации.
Больше информации по оптимальному ребилду/реорганизации индексов, а так же способам оценки фрагментации индекса можно посмотреть на сайте ms. Там, в принципе, все по полочкам и с примерами :-)
В этот раз я правильно Вас понял?