2

Nous avons un SQL Server 2012 par exemple, avec auto-statitics ON pour la DB:Pourquoi ces statistiques SQL Server sont-elles obsolètes, lorsqu'elles sont configurées pour une mise à jour automatique?

enter image description here

Mais je courais une requête pour vérifier quelques statistiques et certains n'ont pas été mis à jour dans un certain temps:

enter image description here

  1. Pourquoi est-ce le cas? Existe-t-il une règle pour savoir si SQL Server met à jour les statistiques qui n'ont pas été déclenchées par ces index?
  2. Ai-je besoin de soins? Comment puis-je savoir si je dois les mettre à jour ou s'ils me posent des problèmes de performances?

Merci!

+0

Etes-vous sûr qu'il y avait des changements sur les tables? toutes les statistiques sont-elles fausses, ou juste pour certaines tables, si seulement quelques tables, qu'ont-elles en commun? – RealCheeseLord

Répondre

2

Même si vous définissez les statistiques de mise à jour automatique à vrai, ils sont mis à jour que si un seuil a été reached..this est différent pour les différentes versions

pour SQL Server Seuils 2012 ou plus:

  1. la taille de la table est passée de 0 à 0> lignes

  2. le nombre de lignes dans la table lorsque les statistiques ont été recueillies ont été 500 ou moins, et la colmodctr du plomb La colonne de l'objet statistiques a été modifiée de plus de 500 depuis lors

  3. La table contenait plus de 500 lignes au moment de la collecte des statistiques et le colmodctr de la colonne principale de l'objet statistique a changé de plus de 500 + 20% du nombre de lignes dans la table lorsque les statistiques ont été recueillies

Pour SQLServer 2016, il y a peu de changements majeurs et des statistiques mises à jour SQL avec un nouvel algorithme (lu comme plus fréquemment que les anciennes versions)

Ai-je besoin de soins? Comment puis-je savoir si je dois les mettre à jour ou s'ils me posent des problèmes de performances?

personnes Normalement planifier les travaux d'entretien pendant le week-end et cela inclut reconstruction d'index/statistiques mise à jour ..

Cela devrait normalement prendre soin de la plupart databases.In votre cas, si vous voyez des problèmes de performance en raison de statistiques non valides , vous pouvez les mettre à jour manually.We le font une fois par semaine, mais sites like StackOverflow does it more often

update stats tablename 

lectures complémentaires/références:
Statistics Used by the Query Optimizer in Microsoft SQL Server 2008
Understanding When Statistics Will Automatically Update

+1

Merci .. cela a du sens.Certaines de ces tables ne sont pas aussi actives, donc c'est logique. Deux autres questions: 1) "_Normalement les gens planifient les travaux de maintenance pendant les week-ends et cela inclut la reconstruction de l'index/mise à jour des statistiques .._". Je comprends la nécessité d'une reconstruction manuelle de l'index, mais si AUTO STATS est activé, je n'ai pas besoin de faire manuellement les mises à jour des statistiques, n'est-ce pas? 2) "si vous constatez des problèmes de performances dus à des statistiques invalides". Comment puis-je savoir si mes problèmes de performances sont liés à des statistiques non valides? Il me semble me souvenir de quelque chose à propos des "rangées estimées par rapport aux rangées réelles". – RPM1984

+0

Les statistiques de mise à jour provoquent beaucoup d'E/S, donc la planification pendant les jours creuses est une des raisons pour lesquelles je pourrais réfléchir. Deuxièmement, si les statistiques SQL ne sont pas à jour pour une requête en cours d'exécution, l'exécution de la requête est interrompue. de temps jusqu'à ce que les statistiques soient reconstruites – TheGameiswar

+0

Les lignes estimées par rapport aux lignes réelles sont correctes – TheGameiswar