Y a-t-il une raison de mettre à jour les statistiques manuellement?

19

Dans SQL Server, les statistiques sont mises à jour automatiquement une fois Auto Update Statisticsdans True(qui est la valeur par défaut). Y a-t-il une raison de mettre à jour les statistiques manuellement et dans quelles circonstances?

jrara
la source

Réponses:

21

Bien sûr, si vos données changent plus fréquemment que le taux de statistiques automatiques (ou, par exemple, vous mettez à jour <20% des lignes fréquemment, comme la mise à jour des statuts ou des horodatages). Ou si votre table est énorme et qu'elle ne change pas suffisamment pour déclencher des mises à jour automatiques des statistiques. Ou si vous avez filtré les index ( puisque le seuil de statistiques automatiques est toujours basé sur le% de changement sur la table entière, pas sur le% de changement du sous-ensemble de lignes dans l'index filtré ).

Aaron Bertrand
la source
+1 pour les index filtrés. Je pense que c'est la raison principale, ou sur de TRÈS grands ensembles de données. J'ai des tableaux que j'insère 30m de lignes par mois, mais c'est un petit pourcentage, donc les statistiques ne sont normalement pas mises à jour à moins que je ne les lance manuellement.
JNK
+1 De plus, vous le faites selon un calendrier pour réinitialiser les compteurs, ce qui signifie moins de chances en dehors de votre fenêtre de maintenance.
gbn
7

Quelques raisons (superficielles) supplémentaires:

Les statistiques de mise à jour automatique bloqueront la requête qui a déclenché la mise à jour jusqu'à ce que les nouvelles statistiques soient prêtes.

... sauf si vous activez également la mise à jour automatique des statistiques de manière asynchrone. Ensuite, la requête qui a déclenché la mise à jour n'attendra pas les nouvelles statistiques, mais s'exécutera potentiellement avec les anciennes statistiques incorrectes.

J'ai également rencontré des problèmes de blocage étranges lorsqu'une base de données avec des tables relativement grandes (44 millions de lignes, 8,5 Go) commençait à mettre à jour les statistiques. Nous avons cependant déclassé cette application avant de pouvoir vraiment retracer ce qui se passait.

db2
la source
1
+1 C'est un excellent point sur le blocage et l'option asynchrone.
Aaron Bertrand