JSS2013 : Statistiques

297 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
297
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
6
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

JSS2013 : Statistiques

  1. 1. Les journées SQL Server 2013 Un événement organisé par GUSS #JSS2013
  2. 2. Les journées SQL Server 2013 Statistiques Christophe LAPORTE Un événement organisé par GUSS #JSS2013
  3. 3. Christophe LAPORTE ~ depuis 1997 6.5 <= SQL Server <= 2012 christophe_laporte@hotmail.fr http://conseilit.wordpress.com/ @conseilit #JSS2013
  4. 4. Merci à nos sponsors #JSS2013
  5. 5. Agenda • 11 démos pour comprendre les statistiques • Q/R (s’il reste du temps) #JSS2013
  6. 6. F5 – et la magie opère • Schématiquement, la requête est – Compilée (parsing / algébrisation / optimisation) – Le plan d'exécution est mise en cache – La requête est exécutée • Démo 1 : plan d’exécution #JSS2013
  7. 7. Pas de la magie : des statistiques • • • • Informations générales Densité Histogramme Démo 2 : montre-moi une statistique #JSS2013
  8. 8. Et ça fonctionne • Plutôt bien • Enfin pas tout le temps ! • Démo 3 : parameter sniffing #JSS2013
  9. 9. CHECKPOINT - on se pose pour faire un point • Fonctionne bien pour requête ad-hoc • Malgré le problème de parameter sniffing • Les statistiques sont utiles pour créer un "bon" plan d'exécution #JSS2013
  10. 10. Que se passe t'il en l’absence de statistiques • Par défaut, si besoin de statistiques – SQL Server va en générer • Démo 4 : – Paramètre AUTO_CREATE_STATISTICS • Pas un bon plan – dans tous les sens du terme ! #JSS2013
  11. 11. Les statistiques auto générées • Démo 5 : les statistiques auto générées • Donc on conserve actif le paramètre AUTO_CREATE_STATISTICS #JSS2013
  12. 12. Le problème des statistiques (1) • L’histogramme … • Quand ? – Nombre important de lignes dans table – Nombreuses valeurs distinctes sur une colonne • 200 valeurs + NULL – Problème de précision – Problème de distribution – Démo 6 • Fonctionne bien – si distribution homogène #JSS2013
  13. 13. Le problème des statistiques (2) • La mise à jour des données – Démo 7 • Mise à jour des statistiques – Seuil : 20% + 500 – Rebuild Index – Mise à jour manuelle des statistiques • Autre solution : Trace flag 2371 – Démo 8 #JSS2013
  14. 14. TF 2371 #JSS2013
  15. 15. Le problème des statistiques (3) • Les nouvelles données – Les statistiques se basent sur les données connues – Estimer le nombre d’enregistrements hors plage • < à la valeur minimale • > à la valeur maximale • Démo 9 #JSS2013
  16. 16. Le problème des statistiques (4) • Présence de statistiques auto générées – – – – Peut être un index manquant Je créé l'index ! (merci de ne pas généraliser …) Mais la statistique auto générée reste Démo 10 • Veiller à ne pas avoir de doublons – Index <-> statistique auto générée – Consomme des ressources lors de la mise à jour #JSS2013
  17. 17. Quelques solutions • Udate stats + fréquents – Attention aux statistiques auto générées – Scripts de type Ola Hallengren • statistiques filtrées – Mais attention ! • Si données s’étendent sur plusieurs intervalles • Démo 11 • Plan guides – Attention : en optimisation, tout peut changer • SQL 2014 – Nouveau Cost Estimator – Statistiques incrémentales (tables partitionnées) #JSS2013
  18. 18. Récapitulatif • Le plan d'exécution est dépendant des statistiques • Des statistiques à jour sont donc nécessaires • Si l'on peut "sniffer" la valeur d'un paramètre – l'estimation provient de l'histogramme – Estimation relativement précise – Si le plan est sauvegardé, cette valeur sera utilisée pour les prochaines exécutions (Procédures stockées) • Si l'on ne peut pas "sniffer" le paramètre l'estimation provient de la densité Estimation basée sur une "moyenne" Le plan généré convient à la majorité des valeurs distinctes Suivant les cas, ce sera aussi performant, ou moins performant qu'une estimation issue d'un histogramme – Si le plan est sauvegardé, aucune valeur spécifique n'est liée au plan – Fonctionne plutôt bien lorsque la dispersion des données est homogène – – – – #JSS2013
  19. 19. Questions / Réponses Merci à tous pour votre présence. #JSS2013
  20. 20. #JSS2013 #JSS2013

×