Когда и почему я переиндексирую базу данных MSDE - PullRequest
2 голосов
/ 29 октября 2009

Я понимаю, что индексы должны обновляться автоматически, но когда этого не происходит, нам нужно переиндексировать.

Мой вопрос: (1) Почему это автоматическое обновление не работает или почему индекс стал плохим? (2) Как мне узнать, какая таблица / индекс нуждается в повторной индексации в определенный момент времени?

1 Ответ

2 голосов
/ 29 октября 2009

Индексы статистика может обновляться автоматически. Я не верю, что сами индексы будут перестраиваться автоматически при необходимости (хотя может быть какая-то административная функция, позволяющая это делать).

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

Кроме того, у индексов (на нескольких СУБД) есть параметр FILL_FACTOR , который определяет, сколько дополнительного пространства должно быть оставлено в каждом узле для роста. Например, если вы ожидаете, что данная таблица вырастет на 20% в следующем году, объявив коэффициент заполнения около 80%, степень фрагментации индекса должна быть минимальной в течение первого года (могут быть некоторые, если эти 20% роста распределяются неравномерно, ..)

В SQL Server можно запрашивать свойства индекса, которые указывают на его уровень фрагментации, и, следовательно, на возможную необходимость его обслуживания. Это можно сделать с помощью интерактивной консоли управления. Также возможно сделать это программно , с помощью sys.dm_db_index_physical_stats в MSSQL 2005 и более поздних версиях (может быть, даже в более старых версиях?)

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