Pourquoi désactiver la mise à jour automatique des statistiques?


13

Je viens d'apprendre qu'une entreprise cliente pour laquelle je travaille a décidé de garder les options de statistiques de mise à jour automatique désactivées pour certains de leurs serveurs SQL, et les administrateurs de base de données résolvent manuellement les problèmes de performances lorsqu'ils surviennent.

Cependant, ce genre de n'a pas de sens pour moi. Pourquoi voudriez-vous empêcher la mise à jour des statistiques?

Réponses:


11

Mon conseil:

  • Laissez `` mise à jour automatique des statistiques '' activée (jusqu'à ce que vous rencontriez une très bonne raison de ne pas le faire) - vous ne voulez pas qu'une grosse suppression au milieu d'une journée annule les plans de requête jusqu'à la prochaine exécution de la maintenance.
  • Cependant, planifiez la maintenance / mise à jour des statistiques d' index à un moment calme. sp_updatestatsmettra à jour toutes les statistiques de toutes les tables d'une base de données pour vous, mais cela provoquera également des recompilations de proc stockées, alors choisissez votre heure avec soin (c'est-à-dire sp_updatestatsjuste avant que votre rapport de fin de mois ne soit probablement sous-optimal).

La fréquence à laquelle vous devez exécuter les statistiques de maintenance / reconstruction d'index dépend de la charge de votre base de données, en particulier de la fréquence à laquelle vos données sont modifiées (c'est INSERT-à- dire / UPDATE/ DELETE). Si vous modifiez des données partout dans le spectacle (c'est-à-dire une table intermédiaire pour un traitement par lots hebdomadaire), vous voudrez probablement mettre à jour les statistiques / réorganiser les index tous les soirs. Si vos données sont plutôt plus statiques, vous pouvez probablement en faire un programme hebdomadaire ou bimensuel.


7

Je ne l'ai vu qu'une seule fois avec une mauvaise application qui avait des tas mal indexés et avait un ETL lourd.
C'était des ordures et heureusement pas les miennes.

Sinon, il n'y a aucune raison.

Si vous recevez des mises à jour de statistiques à des moments inappropriés, cela signifie que vous effectuez une maintenance incorrecte des index / statistiques ou que des suppressions / chargements massifs atteignent le seuil.

Avec SQL Server 2005+, vous pouvez quand même différer la mise à jour des statistiques.
Voir "Quand utiliser les mises à jour de statistiques synchrones ou asynchrones"

Il serait intéressant de voir quel article ils ont suivi ou lu pour faire ce choix ...


Est-ce peut-être un problème hérité? La maintenance des statistiques était-elle différente en 2k?
JNK

@JNK: IIRC quelques modifications au seuil de changement de ligne , mais je dois le chercher ... ah oui, maintenant suivi par colonne et non par tableau msdn.microsoft.com/en-us/library/ms190283.aspx
gbn

Est-ce 20% en 2008?
JNK


20% + 500 pour> 500 par colonne depuis SQL Server 2005+
GBN

7

La seule fois où j'ai désactivé les statistiques automatiques, c'est lorsque j'ai utilisé des commandes non documentées pour créer de fausses statistiques que je ne voulais pas que le système efface pendant le chargement des données. C'était un cas TRÈS pointu.


5

Autrefois (SQL Server 2000), l'activation du paramètre de mise à jour automatique des statistiques pouvait entraîner de grandes «pauses» dans les applications OLTP lorsque SQL décidait d'effectuer une mise à jour des statistiques.

À partir de SQL Server 2005, il existe une option asynchrone qui n'entraînera pas la «pause» lorsque les statistiques sont obsolètes et ensuite recompilées. Les statistiques seront recompilées de manière asynchrone pour la prochaine fois qu'elles seront nécessaires.

Gardez à l'esprit cependant qu'il y a un équilibre à avoir - pour les grands ensembles de données, vous souhaiterez peut-être que la requête actuelle tienne compte des statistiques les plus à jour, car la requête peut prendre plus de temps exponentiellement avec un plan de requête inefficace.

Vous pouvez également surveiller le nombre de recompilations par seconde et d'autres mesures de performances cruciales à l'aide des compteurs perfmon qui sont publiés par SQL Server, comme on dit, la preuve est dans le pudding.


4

Dans quelle mesure les systèmes sont-ils actifs?

S'il s'agit principalement de systèmes lus, vous pourriez vous en tirer sans mise à jour, s'ils le font manuellement lorsqu'ils modifient des données (insérer, mettre à jour, supprimer).

Cependant, pour les meilleures pratiques, il est conseillé de rester sur la cause, car je pense qu'il serait rare que ce soit un problème de performance. Je leur enverrais probablement des articles et un billet de blog suggérant de le laisser. Kimberly Tripp en a de bons.


4

Bien que je ne contredise jamais ni ne dise intentionnellement MrDenny (trop de respect pour ses connaissances et ses contributions à la communauté), j'ai remarqué la documentation de MS recommandant de désactiver les statistiques de mise à jour automatique.

À planification et de la configuration de la capacité de stockage et SQL Server (SharePoint Server 2010), MS recommande de le désactiver.

J'ai également lu la même recommandation de MS pour les versions antérieures de SP, mais je ne trouve pas les liens pour l'instant.

Mais je ne suis PAS un expert DBA SP, vous voudrez peut-être également vérifier ce que Chun Liu, ingénieur de terrain MS Permier, a à dire à ce sujet chez Chun Liu sur SharePoint ou simplement ignorer ce post et le laisser.


5
Votre conseil est spécifique aux bases de données SharePoint, il n'est généralement pas applicable à toutes les installations SQL Server.
Simon Righarts

0

Vous ne les désactivez généralement que si vous avez une méthode pour les mettre à jour vous-même. Je le fais tout le temps car nous avons besoin d'un échantillonnage meilleur ou juste différent de celui des statistiques automatiques. C'est assez courant, mais vous ne voudriez pas simplement l'éteindre et ne rien faire d'autre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.