J'ai hérité d'un plan de maintenance qui fait ce qui suit:
Sur le plan de maintenance de 23 minutes, la mise à jour des statistiques prend 13 minutes. Pendant cette période de 13 minutes, l'accès à la base de données est bloqué (ou au moins, la réplication de cette base de données vers nos autres est suspendue).
Ma question est:
Quand devrions-nous mettre à jour les statistiques et pourquoi?
Cela semble être le genre de chose que nous devrions faire moins fréquemment que tous les jours. J'essaie de nous sortir de l'état d'esprit "juste parce que" de faire de la maintenance inutile.
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é les statistiques de mise à jour automatique pour la base de données. Dans votre message d'origine, vous avez dit que les utilisateurs constatent une dégradation des performances en raison de ce plan de maintenance. N'y a-t-il pas d'autre moment pour exécuter ce plan de maintenance? Pas d'autre fenêtre? Je vois que votre plan comprend la réorganisation des index, quand reconstruisez-vous les index? Lorsque cette opération se produit, 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 de la quantité de modifications de données que vos index et données reçoivent . S'il y a très peu de modifications (INSERT
, UPDATE
, DELETE
) aux données, alors vous pourriez avoir une planification plus rare pour le travail de mise à jour des statistiques.
Une façon de savoir si vos statistiques sont périmées est de regarder les plans d'exécution et si vous estimez que les lignes diffèrent considérablement de vos lignes retournées, c'est une bonne indication que l'intervalle doit être augmenté. Dans votre cas, vous allez dans l'autre sens et un peu de procès pourrait être de mise pour vous. Mettez à jour les statistiques chaque semaine et si vous commencez à voir les signes révélateurs de statistiques obsolètes, allez-y.
Si vous utilisez les statistiques de mise à jour automatique pour votre base de données, consultez cette référence pour le seuil de mise à jour des statistiques.
Quand mettre à jour les statistiques?
si et seulement si la fonction de statistiques de mise à jour automatique n'est pas assez bonne 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 mauvais plan de requête parce que les statistiques ne sont pas précises ou actuelles, alors ce pourrait être une bonne idée 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 des requêtes.
alors je suggère d'arrêter la commande Statistiques des mises à jour à partir 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 bons plans de requêtes de manière cohérente, tout en maintenant les coûts de développement et d'administration bas 2. Les statistiques sont utilisé par l'optimiseur de requête pour estimer la sélectivité des expressions, et donc la taille des résultats de requête intermédiaires et finaux. 3. De bonnes statistiques permettent à l'optimiseur d'évaluer avec précision le coût des différents plans de requête, puis de choisir un plan de haute qualité
Si vous souhaitez 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 nécessite des statistiques pour une colonne particulière d'une table qui a subi une activité de mise à jour importante depuis la dernière création ou mise à jour des statistiques, SQL Server met automatiquement à jour les statistiques en échantillonnant les valeurs de colonne (en utilisant les 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é, et elle n'implique qu'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 déclenchement des statistiques de mise à jour dans SQL Server
une fois que vous savez 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 son effet sur les performances, je recommande BrentOzar et Kimberly in sqlskills très bons blogs et blogueurs.