Nous avons certaines bases de données dont la fragmentation d'index est> 95%. Du mieux que je puisse dire, les index n'ont jamais été reconstruits et encore moins réorganisés. Dans des années.
(En toute honnêteté, ces tableaux semblent avoir activé les statistiques de mise à jour automatique. Également en toute honnêteté, il est diligent au sujet des sauvegardes: journaux quotidiens complets et trx toutes les heures.)
Quand j'ai demandé, le DBA a dit qu'il était réticent à reconstruire ou réorganiser les index. Quand j'ai demandé pourquoi, il ne pouvait pas vraiment l'expliquer. Finalement, il a dit qu'il était préoccupé par la perte potentielle de données. Par exemple, l'une des bases de données est utilisée par notre application de comptabilité Great Plains Dynamics, et il semblait très inquiet à ce sujet.
Je ne suis pas DBA mais d'après ce que j'ai lu, son anxiété me semble ... difficile à comprendre.
Je ne sais pas quoi faire ensuite. Suggestions comment dois-je procéder?
la source
Réponses:
La reconstruction d'un index de base de données ne devrait entraîner aucune perte de données. Cependant, cela entraînera probablement une dégradation substantielle des performances, car les index en cours de reconstruction ne seront normalement pas disponibles jusqu'à la fin de la reconstruction. Pour cette raison, cela doit être fait pendant les heures creuses lorsque les systèmes concernés sont inactifs.
La paranoïa est une bonne chose dans un DBA - S'ils s'inquiètent de la perte de données, je leur demanderais de faire un test approprié des sauvegardes (de les restaurer sur un système séparé et de s'assurer que toutes les données sont là), et si elles sont toujours préoccupé puis effectuer une sauvegarde complète avant de reconstruire les index serait une précaution raisonnable à prendre.
la source
WITH (ONLINE=ON)
tant que l'index ne contient pas de colonnes BLOB.REINDEX
comme "maintenance préventive" sur les tables où le contenu de l'index change beaucoup est assez joli commun dans mon expérience (si l'index est principalement statique, c'est moins une chose)Il n'y a aucun risque de perte de données lors de la reconstruction ou de la défragmentation des index.
la source
La réorganisation des index prendra moins de temps et nécessitera moins d'efforts de la part du serveur SQL. Ils peuvent donc être effectués dans un type d'instance de semaine. Si ce que vous dites est vrai, même la réorganisation d'index qui ne l'ont jamais été peut également avoir un impact plus important sur le serveur. La reconstruction des index prendra beaucoup d'efforts de la part du serveur SQL car ils sont supprimés et reconstruits. Faire une reconstruction un soir de semaine ne vaut pas le risque que le serveur soit occupé avec des index et ne serve pas les personnes qui l'utilisent.
Je suis d'accord avec voretaq7, s'il est si inquiet de travailler avec des index, essayez-le d'abord sur les serveurs de développement ou de test pour voir comment réagit.
la source
DROP INDEX
et de reCREATE INDEX
- je ne suis pas sûr de SQL Server, mais je sais que PostgreSQL fait parfois mieux de supprimer un index et de recommencer à zéro plutôt que d'essayer de le reconstruire (REINDEX
).