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.
sql-server
performance
maintenance
statistics
Oignon-Chevalier
la source
la source
Réponses:
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.
la source
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
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.
la source