J’ai une base de données en production avec une table qui est devenue extrêmement volumineuse (beaucoup de données accumulées).
Pour améliorer les performances des requêtes, j’ai utilisé l’optimiseur de SQL Server qui a suggéré un nouvel index.
J’ai donc fait une copie de la base de données de production pour tester et cela améliore effectivement les performances, mais mon problème est qu’il a fallu environ 24 heures pour créer l’index et pendant sa création, l’application est inutilisable.
Pour cette application particulière, être hors service quelques heures n’est pas un problème, mais un temps d’arrêt de 24 heures le serait et je cherche un moyen de créer cet index sans avoir à subir cela.
Je n’ai que quelques idées pour le moment.
Une idée est de copier une sauvegarde vers un autre serveur. Appliquer le nouvel index et tout autre changement. Copier la sauvegarde vers le serveur de production. Mettre l’application hors service et fusionner les nouvelles données depuis le moment de la sauvegarde.
Bien sûr, cela a ses propres problèmes comme devoir fusionner les données ensemble, donc je n’aime pas cette idée pour cette raison.
Il s’agit de SQL Server 2008 Standard Ed.
Je déploie normalement les changements de base de données par script.
MISE À JOUR :
Une autre idée serait de déplacer les données d’archive hors de la table principale sur plusieurs jours par morceaux. Puis créer l’index lorsque la table serait devenue suffisamment petite. Puis migrer lentement les données de retour.
Source : Stack Overflow