Quand mettre à jour les statistiques?

42

J'ai hérité d'un plan de maintenance qui effectue les tâches suivantes:

  • Nettoyer les anciennes données
  • Vérifie l'intégrité de la base de données
  • Effectue des sauvegardes de bases de données et de journaux de transactions
  • Réorganise nos index
  • Statistiques mises à jour
  • Supprimer les anciennes sauvegardes et les fichiers du plan de maintenance

La mise à jour des statistiques du plan de maintenance de 23 minutes prend 13 minutes. Pendant cette période de 13 minutes, l'accès à la base de données est bloqué (ou du moins, la réplication de cette base de données vers nos autres bases est suspendue).

Ma question est:

Quand devrions-nous mettre à jour les statistiques et pourquoi?

Cela semble être le genre de choses que nous devrions faire moins souvent que tous les jours. J'essaie de nous sortir de la "juste parce que" l'esprit de faire de la maintenance inutile.

Oignon-Chevalier
la source
2
Combien de fois / combien de lignes sont insérées / mises à jour / supprimées? Pour moi, c'est le facteur décisif.
JNK
@JNK Nous insérons environ 70 000 lignes par jour sur l'ensemble de la base de données. Mettre à jour environ 100 lignes par mois.
Onion-Knight
1 - Ceci est plus pertinent si nous savons par TABLE combien de lignes et 2 sont exprimées en pourcentage. 70k lignes par jour dans une table de 1 m est très différent de celui dans une table de 500m
JNK
Je recommanderais d'utiliser quelque chose comme ola.hallengren.com/…, cette solution reconstruit / réorganise et met à jour les besoins de cette manière, de manière à réduire le temps requis par votre plan de maintenance et à économiser beaucoup d'espace journal.
Peter

Réponses:

28

Si vous ne disposez pas de la fenêtre de maintenance, la mise à jour quotidienne des statistiques est probablement un peu exagérée. Surtout si vous avez activé la mise à jour automatique des statistiques pour la base de données. Dans votre message original, vous avez dit que les utilisateurs assistaient à une dégradation des performances due à ce plan de maintenance. N'y a-t-il pas un autre moment pour exécuter ce plan de maintenance? Aucune autre fenêtre? Je vois que votre plan englobe la réorganisation des index, quand reconstruisez-vous les index? Lorsque cette opération est effectuée, les statistiques sont automatiquement mises à jour (à condition qu'elles ne soient pas désactivées pour l'index).

La fréquence exacte de mise à jour des statistiques dépend en grande partie du nombre de modifications apportées aux données par vos index et vos données . S'il y a très peu de modifications ( INSERT, UPDATE, DELETE) aux données, alors vous pourriez avoir un calendrier plus rares pour l'emploi des statistiques de mise à jour.

Une façon de déterminer si vos statistiques sont obsolètes consiste à examiner les plans d'exécution. Si vous estimez que les lignes diffèrent considérablement de vos lignes réelles, cela indique que l'intervalle doit être augmenté. Dans votre cas, vous allez dans l'autre sens et un peu de procès peut vous convenir. Mettez à jour les statistiques toutes les semaines et si vous commencez à voir les signes révélateurs de statistiques obsolètes, passez à partir de là.

Si vous utilisez des statistiques de mise à jour automatique pour votre base de données, consultez cette référence pour connaître le seuil de mise à jour des statistiques.

Thomas Stringer
la source
Nous reconstruisons les index une fois par semaine.
Onion-Knight
5
@ Onion-Knight Ensuite, vous mettez également à jour les statistiques une fois par semaine lorsque vous reconstruisez vos index. Cela pourrait suffire si vous effectuez une reconstruction d'index général dans la base de données.
Thomas Stringer
25

Quand mettre à jour les statistiques?

si et seulement si la fonctionnalité de statistiques de mise à jour automatique n'est pas suffisante pour vos besoins. Je veux dire que si les statistiques de création automatique et de mise à jour automatique sont activées et que vous obtenez un plan de requête incorrect, car les statistiques ne sont ni précises ni actuelles, il peut donc être judicieux de contrôler la création et la mise à jour des statistiques. mais si vous êtes d'accord avec les performances de votre serveur SQL et les temps d'exécution de la requête.

alors je suggère d'arrêter la commande Statistiques de mises à jour de vos plans de maintenance

La mise à jour des statistiques est importante et utile 1. permet à l'optimiseur de requêtes SQL Server de produire de manière cohérente de bons plans de requêtes, tout en limitant les coûts de développement et d'administration 2. Les statistiques sont utilisées par l'optimiseur de requêtes pour estimer la sélectivité des expressions, et donc la taille des et résultats de la requête finale. 3. De bonnes statistiques permettent à l'optimiseur d'évaluer avec précision le coût de différents plans de requête, puis de choisir un plan de haute qualité.


Si vous voulez mettre à jour les statistiques manuellement, vous devez d'abord savoir quand les statistiques sont mises à jour automatiquement

Si l'optimiseur de requêtes SQL Server requiert des statistiques pour une colonne particulière d'une table ayant subi une importante activité de mise à jour depuis la dernière création ou mise à jour des statistiques, SQL Server met automatiquement à jour les statistiques en échantillonnant les valeurs des colonnes (à l'aide de statistiques de mise à jour automatique). . La mise à jour automatique des statistiques est déclenchée par l'optimisation de la requête ou par l'exécution d'un plan compilé. Elle implique uniquement un sous-ensemble des colonnes référencées dans la requête. Les statistiques sont mises à jour avant la compilation de la requête si AUTO_UPDATE_STATISTCS_ASYNC est désactivé

voici de beaux articles qui parlent du moment où les statistiques de mise à jour sont déclenchées dans SQL Server

  1. from simple-talk Section 13. Quand la mise à jour automatique aux statistiques est-elle déclenchée?
  2. support.microsoft Section: Automatisation de la détermination des autostats
  3. Section msdn.microsoft : Maintenance des statistiques dans SQL Server 2008

après avoir su quand les statistiques sont déclenchées, cela vous aidera à décider quand mettre à jour les statistiques manuellement

pour en savoir plus sur les statistiques et leurs effets sur les performances, je recommande BrentOzar et Kimberly dans sqlskills de très bons blogs et blogueurs.

AmmarR
la source