SQL Server : Tuning et Troubleshooting

2 043 vues

Publié le

Performing or not performing that is the question ! Comment diagnostiquer les problèmes de performance, les bonnes pratiques. Configurations, trace flags, indexes, statistiques…

Speakers : Yanick Mezui (Microsoft), Frederic Pichaut (Microsoft)

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
2 043
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
77
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Plus de 100 DMVs.Blog CSS décrivant les Waits et les actions à mener:http://blogs.msdn.com/b/psssql/archive/2009/11/03/the-sql-server-wait-type-repository.aspxMémoire (lescompteursimportants)Memory/Available MBytesSQLServer:Memory Manager/Target Server Memory (KB)SQLServer:Memory Manager/Total Server Memory (KB)Buffer Manager:Page Life Expectancy (valeurtypique 300 sec pour OLTP)Buffer Manager: Lazy Writes/sec (valeurtypique < 20)Buffer Manager:Page Reads/sec (valeurtypique < 90)Buffer Manager:Page Writes/sec (valeurtypique < 90)DisquesLogicalDisk:Avg. Disk sec/ReadLogicalDisk:Avg. Disk sec/WriteProcesseursProcessor: % Processor TimeProcessor: % Privileged TimeProcessor: % User TimeProcess: % Processor Time:sqlservrSQL Statistics: SQL Compilations/sec & SQL recompilations/secSQL Trace / SQL ProfilerAssezlourd à gérersurtoutsi on a un peu de charge sur le serveur.Bien veillez à filtrer les évènements qui nous interessent.SQL Profiler Peux faire tomber un serveur.SQL Server Profiler Deprecated.SQL Trace estl’outil de collecte.SQL Profiler estl’outilgraphique. Commeilestgraphiqueilpeut rater des evenements. Pas designer pour regarder les performances d’un serveur de Prod.XEventsEnvirons 600 eventssur SQL Server 2012
  • PAL: On peutdéfinirsespropresfichiers de seuilsadaptés au workload de sesenvironnements.SQLNexus 4, utilisé pendant les demos n’est pas disponible au grand public.RML utilities 09.04.005 permetcependant aux clients avec SQLNexus 3.0.0.0 ( de Codeplex) d’analyser des traces SQL Server 2012.PAL Telechargeablesurcodeplex (http://pal.codeplex.com/)SQLNexusTelechargeablesurcodeplex (http://sqlnexus.codeplex.com/)RML utilities Telechargeablesur le web (site de telechargement Microsoft http://www.microsoft.com/en-us/download/details.aspx?id=4511)
  • Given a parameterized SQL query template that defines a relational selectivity space, and a choice of database engine, the Picasso tool automatically generates a variety of diagrams that characterize the behavior of the engine’s optimizer over this space.
  • The cost surface with old CE looks very bad – notice the “cliff" in the picture results from the fact that the cost of the optimal plan decreases when selectivity increases, which means for some area we have a defect in how we did CE. The underlying problem is the consistency of Cardinality Estimation for joins: For an arbitrary join graph that represents join of N tables, we estimate the cardinality of the graph one edge at a time.Key Point: Consistency means the cardinality of the join graph should be independent of the order in which we examine the graph. The old CE violates this consistency property.
  • Hypothèse de confinement:Les requêtes concernent des données qui existent.Pour un prédicat Column-Equal-Constant, nous supposons que la constante existe dans le colonne.Pour une requête equijoin sur deux tables, nous supposons que sur la colonne de jointure les valeurs d’un coté de la jointure existent de l’autre coté.Hypothèse d’indépendance:Les données de différentes colonnes sont distribuées de façon indépendantesPour la sélectivité (Sel)Suivant deux prédicats P, Q qui n’impliquent pas les même colonnesSel(P ^ Q) = Sel(P) * Sel(Q)Pour le nombre de valeurs distinctes (NDV)Suivant deux colonnes c1, c2NDV(c1, c2) = NDV(c1) * NDV(c2)Sauf si une stats multi-colonnes indique une autre valeur
  • Essentially, applying containment to “extrapolate” histogram
  • A Cardinality calculator specifies what strategy will be used to compute cardinalityMotivation:1) Easy Diagnosis:since problems in CE are at the root of many plan choice issues, it is important to be able to diagnose why we chose a particular estimate. We can think of this process in two layers or steps:- We want trace output that will give us a general idea of the “thought process” behind a particular estimate. This should act as a good starting point for any investigation.- Assuming the trace output suggests some potential trouble spot, it should be fairly easy to find the relevant part of the code for a more detailed investigation. 2) Maintain and extend codeWe would also like to be able to add on to the code in future releases. The same structure which makes the code easy to debug should also make it easy to extend: If we make it easier to understand how the original set of pieces fit together, it should be easier to see where to insert a new piece.Example: adding a new strategy (calculator)
  • SQL Server : Tuning et Troubleshooting

    1. 1. Troubleshooting & Tuning SQL Yanick Mezui Senior PFE Microsoft France Frédéric Pichaut Senior Escalation Egineer Microsoft France Bases de données/Data management
    2. 2. Donnez votre avis ! Depuis votre smartphone sur : http://notes.mstechdays.fr De nombreux lots à gagner toute les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les Techdays ! #mstechdays Bases de données/ Data management
    3. 3. METHODOLOGIE Sous titre #mstechdays Bases de données/ Data management
    4. 4. Méthodologie • L’analyse de performance est un perpétuel recommencement • Quand on pense en avoir fini, un changement survient Capture Charge du système Analyse Reglages #mstechdays Bases de données/ Data management
    5. 5. Comment aborder une requête longue #mstechdays Bases de données/ Data management
    6. 6. OUTILS DE COLLECTE #mstechdays Bases de données/ Data management
    7. 7. Les outils de collecte • • • • • Dynamic Management Views (DMVs) – sys.dm_os_wait_stats – sys.dm_os_waiting_tasks Performance Monitor (perfmon) – Mémoire – Disques – Processeurs SQL Trace / SQL Server Profiler – Collecte des events SQL Server – La collecte peut s’effectuer côté client – La collecte peut s’effectuer côté serveur – La Trace Profiler rajoute un overhead sur le serveur Extended Events (Xevent ou XE) – Repose sur l’infrastructure de tracing Windows ETW – Flexibilité du schema des events – Collecte performante et non intrusive (overhead très limité sur le serveur 5% CPU pour 20000 events/sec) Automatisation de la collecte – SQLDiag – PerfStatsScripts – PSSDiag #mstechdays Server Level dm_exec_* Execution of user code and associated connections dm_os_* Memory, locking & scheduling dm_tran_* Transactions & isolation dm_io_* I/O on network and disks dm_db_* Databases and database objects Bases de données/ Data management Component Level dm_repl_* Replication dm_broker_* SQL Service Broker dm_fts_* Full Text Search dm_qn_* Query Notifications dm_clr_* Common Language Runtime
    8. 8. OUTILS D’ANALYSE #mstechdays Bases de données/ Data management
    9. 9. Les outils d’analyse • • • • Performance Analysis of Logs (PAL) – Automatise l’analyse des compteurs de performance Windows – Utilise un fichier avec des seuils de compteurs de performance – Il existe des fichiers de seuils pour les grands produits Serveurs Microsoft (ex: SQL Server, Exchange, SharePoint, etc.) RML Utilities – Automatise l’analyse de la Trace SQL – ReadTrace – Reporter SQLNexus – Automatise l’analyse des Waits, des blocages, de la trace SQL – Utilise RML utilities pour l’analyse de la trace SQL – Fournit des rapports: • Bottleneck Analysis • Blocking & Wait Statistics • Top Queries (Duration, CPU, Reads, Writes) Extended Events Viewer – En utilisant le query_hash, et les capacités d’aggrégation et de tri du XE Viewer on peut arriver aux mêmes rapports Top Queries (Duration, CPU, Reads, Writes) que SQLNexus #mstechdays Bases de données/ Data management
    10. 10. SQL Premier Field Engineering & Performance • Formations chez Microsoft ou dans vos locaux – SQL Server 2008 Performance Tuning & Optimization – SQL Server 2012 Performance Tuning, Design, Internals & Architecture – SQL Server Hands On Troubleshooting • Transfert d’expertise et Analyse de Performance sur vos environnements – SQL server Performance Tuning & Optimization Clinics #mstechdays Bases de données/ Data management
    11. 11. COLLECTE & ANALYSE DE PERFORMANCE AVEC PERFSTATS SCRIPTS, PAL & SQLNEXUS #mstechdays Bases de données/ Data management
    12. 12. LES STATISTIQUES #mstechdays Bases de données/ Data management
    13. 13. LES STATISTIQUES • L’optimiseur se sert des statistiques pour déterminer la cardinalité (#ligne) d’un résultat • Une page de statistique par indexe, on peut en créer sur des colonnes • Elles peuvent être – Crée/MaJ automatiquement ou manuellement, De façon synchrone ou asynchrone – Basée sur un échantillonnage ou un full scan – Filtrée : CREATE STATISTICS FSPoids ON Products(Weight) WHERE CatID IN (1,2,3); • Elles sont mises à jour en fonction du taux de modification de la table • Pas de statistiques sur les variables tables mais il peut y en avoir sur les tables temporaires • Depuis SQL Server 2008 R2 SP2 et SQL Server 2012 Service Pack 1, DMV sys.dm_db_stats_Properties #mstechdays Bases de données/ Data management
    14. 14. AUTO-UPDATE STATISTICS #mstechdays Bases de données/ Data management
    15. 15. Statistiques Incrémentales / Fast Statistics • Objectif: – Mise à jour plus rapide/fréquente sur des tables avec de larges partitions – Des mises à jour automatiques plus fréquentes • Uniquement sur les tables partitionnées • Une page de statistique par partition • Merge binaire des statistiques de chaque partition pour créer une statistique globale • L’ensemble des pages sont persistante sur disque. • La mise à jour peut être globale ou indépendante par partitions – (500 + 20% de la taille moyenne des partitions) pour la mise à jour de la stat globale – 20% de modification dans une partition -> Auto Stat #mstechdays Bases de données/ Data management
    16. 16. Exemples • Sur une table avec 4 partitions • Ajout d’une 5eme partition #mstechdays Bases de données/ Data management
    17. 17. NEW CARDINALITY ESTIMATION #mstechdays Bases de données/ Data management
    18. 18. Les bases du Query Optimization • Composent de plus en plus critique • L’optimisation des requêtes doit déterminer le chemin le plus efficace avec des workloads très différents (OLTP, DW et DS) • Avoir une performance prédictible • Tous va dépendre des estimations de cardinalité (« Cardinality Estimation » ou CE) #mstechdays Bases de données/ Data management
    19. 19. Picasso Database Optimizer Visualizer • De Database Systems Lab, Indian Institute of Science • Un outils de visualisation graphique • Visualiser et analyser le comportement des optimiseurs • Operationel pour plusieurs moteurs – – – – #mstechdays – Microsoft SQL Server IBM DB2 Oracle Sybase Bases de données/ Data management PostgreSQL
    20. 20. Estimation du coût pour requêtes à 2 variablesServer 2008 R2 SQL Prototype with new CE Le cout ne doit pas diminuer alors que le nombre d’enregistrements retourné augmente #mstechdays Bases de données/ Data management
    21. 21. Problèmes de cardinalités • Ils sont la cause des mauvais choix de plans • On peut les détecter de plusieurs façons – SET STATICS PROFILE ON • Rows, Executes VS EstimateRows, EstimateExecutions – Actual Execution Plan #mstechdays Xevents inaccurate_cardinality_estimate – Bases de données/ Data management
    22. 22. Le Nouveau Model Mathématique Hypothèse d’uniformité: – Dans chaque palier d’histogramme les valeurs distinctes sont équidistantes et ont la même fréquence. Hypothèse de confinement: – Les requêtes concernent des données qui existent. Hypothèse d’indépendance: – Les données de différentes colonnes sont distribuées de façons indépendantes #mstechdays Bases de données/ Data management
    23. 23. Exemples #mstechdays Bases de données/ Data management
    24. 24. Problème de clé ascendante • Qu’est ce que le problème de clé ascendante? – Les données sont ascendantes – Les nouvelles donnés ne sont pas dans l’histogramme • Comment le nouveau CE le solutionne? – Toujours supposer que les valeurs demandées existent – Estimer la cardinalité en utilisant la fréquence moyenne #mstechdays Les mêmes suppositions sont prisent pour les – Bases de données/ Data management
    25. 25. Qu’est-ce qui a été fait? #mstechdays Bases de données/ Data management
    26. 26. Architecture Division de Cardinality Estimation en deux étapes • Étapes 1: Planning Trouver un « cardinality calculator » pour les paramètres • Étapes 2: Exécution Exécution des « calculator » Bénéfices – Meilleur supportabilité Bases de données/ Data management #mstechdays Maintenance et extension plus facile à intégrer –
    27. 27. Statistiques Incrémentales New ce #mstechdays Bases de données/ Data management
    28. 28. Ressources Sessions Data Insights pour les professionnels de l’IT http://aka.ms/itprosql Sessions Data Insights pour les décideurs informatiques http://aka.ms/itdmsql Business Accelerator, un programme sur mesure pour les éditeurs de logiciel http://aka.ms/isvbusacc Un client prêt à témoigner ? Une belle histoire à partager ? Un Nokia Lumia à gagner ! http://aka.ms/cloudosref #mstechdays Bases de données/ Data management
    29. 29. Digital is business

    ×