Comment utiliser le plan execution le plan execution

310 vues

Publié le

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

Aucun téléchargement
Vues
Nombre de vues
310
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
4
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Ouvrir SSMS & SQL démarré ?GRANDE RESPIRATION… Suite de ma présentation du 14 octobre 2009Amis développeursLien sondage
  • 15 ans exp. SQLPeud’exp. avec plan d’execution ->académiqueDBA plus que DEV
  • Cycle de vie du logiciel
  • KPI = Nb Exec, Coût Moyen, Qté IO, CPU, etc…État du système = Snapshot du schéma, Nb lignes dans les tables référencés, etc.Snapshot BD pour analyse
  • Comparer avant & aprèsTemps:PerceptionDépends de l’état du BUFFER, du SYSTÈME ou BLOCAGEIO & CPU:Minimiser les ressources systèmeDiminuer IO -> Augmenter CPUQuel est la corrélation entre les 2 ?Coût:Coût ESTIMÉ et coût RÉELNe tiens pas compte des UDF ni CLR
  • DMVProfiler = Performance – Showplan XML"List plan in the cache.sql"
  • Parsing = F5Traduction en OBJECTID ->Query Hash, Processor Treeou SignatureRelational Engine -> Utilise les Stats pour produire un Query Plan OU réutilise un plan cachéStorage -> Révise le plan avant d'exécuter
  • Merge = trié, 1 passeBoucle embriquéeHash = function MD5, CRC, Encryption A<> à
  • Fonction sur les colonnesIl y a moyen de corriger les index"Exemple SearchArguments.sql"
  • Le dictionnaire imaginaireDifférence entre dict. et index clustérisé = arbre BChercher mot qui commence par ENTCombien de mots commence par ENTCombien de mots termine par ENT
  • Utiliser un champs de petite tailleExemple Nom, Prénom
  • Cardinalité, Histogramme, String statisticsSelectivité haut = uniqueDensité = 1/SelectivitéExempleStatistiques
  • OPTIMIZE FOR = parameter sniffingSQL 2000 -> RECOMPILE or KEEPFIXED PLAN
  • Optimisateur peut changer l'ordre -> théorique
  • Expliquer SearchArgChamps le plus petit possible, Clé artificielle
  • Comment la performance est intégré dans votre entreprise ?
  • Comment utiliser le plan execution le plan execution

    1. 1. Comment utiliser le pland’exécution pour améliorer la performance des requêtes 2013 Communauté .NET de Montréal goo.gl/9AjiC
    2. 2. Pollus Brodeur• www.linkedin.cominpollusb• www.pollusbrodeur.com goo.gl/9AjiC
    3. 3. Mise en situation typique Démo goo.gl/9AjiC
    4. 4. Mise en situation idéale Analyse fonctionnelle Déploiement Développement Tests Révision du code acceptation Révision de Test unitaire performance goo.gl/9AjiC
    5. 5. Révision de performance de code ???• Compiler les statistiques de performance• Snapshot de létat du système (Schéma, taille des tables, …)• Recommandations de lArchitecte, DBA et du DEV• Scénarios testés et rejetés goo.gl/9AjiC
    6. 6. Métriques• Temps• IO reads, writes• CPU• Coût = fn(CPU, IO)• Coût = fn(CPU, IO) sauf si UDF ou CLR goo.gl/9AjiC
    7. 7. Le plan d’exécution se trouve…• 3 types de plan dexécution • Texte • Graphique • XML• Comment extraire le plan 1. SSMS 2. DMV Démo 3. Profiler goo.gl/9AjiC
    8. 8. Quoi chercher dans le plan dexecution ?• Opérateurs coûteux• Opérateurs SCAN• Opérateurs HASH• Lignes épaisses• ORDER BY• Large plan goo.gl/9AjiC
    9. 9. Lexécution dune requête1. Parsing2. Algebrizer3. Relational Engine4. Storage Engine goo.gl/9AjiC
    10. 10. Opérateurs Autres opérateurs goo.gl/9AjiC
    11. 11. Search Arguments• Filtre dans la clause WHERE qui permet dutiliser un index LEFT(LastName, 1) = A vs LastName like A% YEAR(OrderDate) = 2004 vs OrderDate between 2004-01-01 and 2004-12-31 Démo goo.gl/9AjiC
    12. 12. Les indexes• Clustérisé = Dictionnaire• Non-clustérisé = index de livre• Covering = Tous se trouve dans l’index• Filtered = Index partiel• Indexed View = Vue matérialisée• Full Text Catalog = Recherche de mots• XML goo.gl/9AjiC
    13. 13. Index clustérisé & non-clustérisé• Index clustérisé est utilisé dans les indexes non-clustérisé.• Lordre des colonnes est important.• Les champs INCLUDE ne sont pas triés. create table table1( col1 int primary key, col2 varchar(20), col3 int); -- Cet index create index idx1 on table1(col2) -- Sera le même que... create index idx2 on table1(col2, col1) goo.gl/9AjiC
    14. 14. Pourquoi un index n’est pas utilisé ?• Les statistiques• La sélectivité• La densité Démo• La cardinalité• Histogramme Un index nest pas utilisé si la sélectivité de la colonne filtrée nest pas assez élevé. goo.gl/9AjiC
    15. 15. Hints• Query hints • MAXDOP • OPTIMIZE FOR • RECOMPILE Démo • KEEP PLAN• Join hints • LOOP • MERGE• Table hints • INDEX • FORCESEEK goo.gl/9AjiC
    16. 16. Theoretical Query Execution OrderTQEO excluding UNION TQEO including UNION1. FROM, JOIN, APPLY et ON 1. FROM, JOIN, APPLY et ON2. WHERE 2. WHERE3. GROUP BY 3. GROUP BY4. HAVING 4. HAVING5. SELECT 5. TOP6. ORDER BY 6. UNION et SELECT7. TOP 7. ORDER BY8. FOR XML 8. FOR XML goo.gl/9AjiC
    17. 17. Autres pistes doptimisation• Nouveau code (MERGE, CROSS APPLY, etc)• Schéma (tables, vues) et "Dénormalisation"• Tri des données par le client• Utiliser la cache du côté client• Parallélisme MAXDOP• Éviter les curseurs• Vérifier si le plan est réutilisé avec Profiler SP:Cache Hit• Partition (Entreprise)• Compression (Entreprise) goo.gl/9AjiC
    18. 18. DMV• Trouver les indexes non utilisés ou en double goo.gl/9AjiC
    19. 19. Conclusion• Prendre le temps de comparer (tester) plusieurs scénarios.• Utiliser les nouvelles commandes.• Suivre les recommandations & retirer ensuite les indexes non-utilisés ou en double (avec les DMV).• Developpez un questionnaire pour vous permettre de réviser la performance du code.• Nattendez pas après le DBA ou le DEV pour évaluer la performance. goo.gl/9AjiC
    20. 20. BibliographieThernstrom, Tobias. Weber, Ann. Hotek, Mike. (2009). MCTS Self-PacedTraining Kit (Exam 70-433) SQL Server 2008-Database Development.Redmond, USA. 484 p.Fritchey, Grant. (2012). SQL Server Execution Plans Second Edition,Simple Talk Publishing, USA, 321 p. LinkNevarez, Benjamin. (2010). Inside the SQL Server Query Optimizer,Simple Talk Publishing, USA, 258 p.Link goo.gl/9AjiC
    21. 21. Questions• La présentation et les exemples seront disponible sur www.dotnetmontreal.com• Résultat du sondage goo.gl/R3OHI• Vous pouvez me rejoindre pollusb@gmail.com goo.gl/9AjiC

    ×