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)
2. Troubleshooting & Tuning
SQL
Yanick Mezui
Senior PFE
Microsoft France
Frédéric Pichaut
Senior Escalation Egineer
Microsoft France
Bases de données/Data management
3. 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
5. 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
6. Comment aborder une requête longue
#mstechdays
Bases de données/ Data management
8. 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
10. 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
11. 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
12. COLLECTE & ANALYSE DE
PERFORMANCE AVEC PERFSTATS
SCRIPTS, PAL & SQLNEXUS
#mstechdays
Bases de données/ Data management
14. 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
16. 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
17. Exemples
• Sur une table avec 4 partitions
• Ajout d’une 5eme partition
#mstechdays
Bases de données/ Data management
19. 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
20. 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
21. 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
22. 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
23. 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
25. 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
26. Qu’est-ce qui a été fait?
#mstechdays
Bases de données/ Data management
27. 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
–
29. 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
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)