Реорганизация индексов и размера базы данных
У меня есть проблема фрагментации в моей производственной базе данных. Одна из моих основных таблиц данных имеет размер около 6 ГБ (индексы 3 ГБ) (около 9 миллионов записей) и имеет 94%(!) Фрагментацию индекса.
Я знаю, что реорганизация индексов решит эту проблему, НО моя база данных находится на SQL Server 2008R2 Express, который имеет ограничение в 10 ГБ, а моя база данных уже имеет 8 ГБ.
Я прочитал несколько постов в блоге об этой проблеме, но не дал ответа на мою ситуацию.
У меня вопрос1: какой размер (% или в ГБ) можно ожидать после реорганизации индексов в этой таблице?
Вопрос 2: Будет ли индекс удаления -> Создавать тот же индекс занимать меньше места? Время не является фактором для меня в данный момент.
Дополнительный вопрос: есть ли другие предложения по фрагментации базы данных? Я знаю только, чтобы избежать сокращения, как огонь;)
1 ответ
Наличие INDEX для ключевых столбцов улучшит соединения и фильтры, исключая необходимость сканирования таблицы. Хорошо поддерживаемый индекс может значительно улучшить производительность.
Это верно, что GUID делает плохой выбор для индексированных столбцов, но это ни в коем случае не означает, что вы не должны создавать эти индексы. В идеале рекомендуется использовать тип данных INT или BIGINT.
Для меня добавление NEWID() по умолчанию показало некоторое улучшение в противодействии фрагментации индекса, но в случае неудачи всех альтернатив вам, возможно, придется выполнять операции обслуживания индекса (перестроить, реорганизовывать) чаще, чем для других индексов. Для реорганизации требуется некоторое рабочее пространство, но в вашем сценарии, поскольку время не имеет значения, я бы отключил индекс, сократил БД и создал индекс.