Сильно фрагментированные индексы - SQL Server 2005 - PullRequest
0 голосов
/ 15 июля 2010

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

  1. Восстановление новой рабочей копии в тестовом экземпляре
  2. Перестройка индексов, обновление статистики
  3. Перезаписать базу данных prod из тестового экземпляра
  4. Применение журналов транзакций для получения базы данных.

Хотя вышеприведенный метод тоже требует простоя, но его относительно меньше. Я хотел знать, можно ли это сделать, или я просто тупой :) Пожалуйста, посоветуйте

RK

Ответы [ 2 ]

2 голосов
/ 15 июля 2010

SQL Server 2005 имеет онлайновый индекс перестраивает (то есть неблокирует).

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

1 голос
/ 15 июля 2010

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

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

Удачи.

...