Сколько времени переиндексация берет SQL Server?

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

6
задан 12 November 2009 в 19:30
4 ответа

Никакой способ оценить, сколько времени это возьмет - столько разных вещей, оказал бы влияние. Подобный тому, что Paul пишет о длине CHECKDB, очень похожие вещи сыграли бы роль с индексацией и т.д. Лучший ответ был бы то, сколько времени он взял в прошлом? Если бы Вы не можете решить, что, следующий наилучший вариант состоял бы в том, чтобы, вероятно, попробовать его на подобной непродуктивной среде, но даже который будет не обязательно соответствовать (т.е. проблемы параллелизма, и т.д. отличалось бы).

Как примечание стороны, можно хотеть изучить ИНДЕКСНЫЕ ОПЕРАЦИИ ОНЛАЙН в Sql 2005 и выше... Я не могу добавить, что вторая гиперссылка, но Google "онлайн индексирует операционный SQL-сервер" и нажимает на главную ссылку.

1
ответ дан 3 December 2019 в 00:31

Вы на самом деле проверили, насколько фрагментированный Ваши таблицы / индексы? Попытайтесь выполнить следующий запрос против базы данных (запрос работает на SQL2005 или выше). Обратите внимание, что этот запрос повлияет на Ваш сервер и должен быть выполнен в спокойное время:

SELECT    OBJECT_NAME(i.OBJECT_ID) AS TableName,
        i.name AS IndexName,
        indexstats.avg_fragmentation_in_percent
FROM    sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') indexstats
        INNER JOIN sys.indexes i ON i.OBJECT_ID = indexstats.OBJECT_ID
    AND i.index_id = indexstats.index_id

Можно выборочно повторно индексировать таблицы/индексы, которые больше всего фрагментируются.

3
ответ дан 3 December 2019 в 00:31

Любая операция базы данных является высоко иждивенцем на аппаратных средствах, Вы работаете на нем.

Так как Вы уже говорите включение очень большой суммы строк это не должна быть проблема для выполнения его в течение часов неполной нагрузки.

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

1
ответ дан 3 December 2019 в 00:31

После того как Вы восстановили таблицу первоначально, Вы захотите настроить задания обслуживания для периодического дефрагментирования/восстанавливания индексов. У Michelle Ufford иначе @SQLFool есть превосходный набор сценариев для этого:

http://sqlfool.com/2009/06/index-defrag-script-v30/

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

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

1
ответ дан 3 December 2019 в 00:31
  • 1
    Я могу также рекомендовать Ola Hallengren' s soloution, который также включает проверку целостности и резервные копии: ola.hallengren.com –  SuperCoolMoss 13 November 2009 в 21:23

Теги

Похожие вопросы