2010-07-15 8 views
0

J'ai récemment hérité d'une base de données de production mal entretenue avec des index très fragmentés (la plupart des index fragmentés à plus de 80%). J'ai demandé un temps d'arrêt à mon manager pour effectuer la reconstruction de l'index, mais malheureusement, les temps d'arrêt ne sont pas autorisés pour le moment. Si l'index en ligne réorganiser aussi n'est pas une option, puis-je faire ce qui suit?Index fortement fragmentés - SQL Server 2005

  1. Restaurez une copie de production fraîche à une instance de test
  2. Reconstruire les index, les statistiques de mise à jour
  3. Ecraser la base de données de prod d'instance de test
  4. Appliquer les journaux de transactions pour obtenir la base de données.

Bien que la méthode ci-dessus nécessite également des temps d'arrêt, mais relativement moins. Je voulais savoir si on peut faire ceci ou je suis juste être stupide :) S'il vous plaît conseiller

RK

Répondre

1

Si la plupart des accès de l'application sont via des recherches, la fragmentation n'est pas un problème. Sinon, j'essaierai de trouver un moment où la reconstruction de l'index n'aura qu'un effet minime, et le fera via un travail planifié. Sûrement l'application ne fonctionne pas 24/7/365 avec une maintenance médiocre, sans que l'entreprise ne s'attende à un problème. (Est-ce qu'ils changent l'huile sur leurs voitures?)

En ce qui concerne votre solution en 4 étapes, copier la table vers une autre base de données, reconstruire l'index et la recopier ne fera rien d'autre que simplement reconstruire l'index existant . En le copiant, l'index est reconstruit de toute façon, alors essayez juste de programmer quelques tables à la fois, jusqu'à ce que vous ayez tout terminé.

Bonne chance.

2

SQL Server 2005 a online index rebuilds (qui est, non-blocage). Dans le cas contraire, il n'est jamais déconnecté (c'est-à-dire, base de données ou serveur hors ligne) mais possède un verrou exclusif sur la table/index en cours de reconstruction.