Database
 sql >> Base de données >  >> RDS >> Database

Critique de livre :Benjamin Nevarez :Query Tuning &Optimization

Ma copie de Microsoft SQL Server 2014 Query Tuning &Optimization (également disponible sur Kindle), par Benjamin Nevarez, est arrivée la semaine dernière. Je n'ai pas pu m'y rendre immédiatement, mais au cours du week-end, j'ai finalement pu le parcourir entre les changements de couches et un voyage au zoo.

TL;DR :Ça vaut le coup

Benjamin présente une explication détaillée de l'ensemble du processus d'optimisation des requêtes, et une grande partie de l'arrière-plan dont vous aurez besoin pour donner un sens à tout cela. Il traite des index, des statistiques et de la mise en cache des plans, ainsi que de la manière de traiter les problèmes courants tels que le reniflage de paramètres. Il explique les options populaires comme Optimiser pour les charges de travail ad hoc et le paramétrage forcé, et comment elles modifient la façon dont les plans sont mis en cache et réutilisés. Il aborde également de nombreuses fonctionnalités non documentées et des indicateurs de trace qui peuvent vous aider à mieux comprendre (ou contraindre) l'approche de SQL Server pour votre requête, et comment utiliser les commandes Trace, Extended Events et DBCC pour examiner les décisions prises par l'optimiseur et leur impact. ai eu.

Une bonne partie du contenu est également dédiée à de nombreuses nouvelles fonctionnalités de SQL Server 2014, notamment l'OLTP en mémoire ("Hekaton"), les index clusters columnstore, les statistiques incrémentielles et le nouvel estimateur de cardinalité. Au moment de la rédaction du livre, les exemples de bases de données AdventureWorks pour SQL Server 2014 n'étaient pas encore publiés, mais ils sont disponibles dès maintenant.

Le livre se termine par un chapitre complexe mais informatif sur les limitations de l'optimiseur de requêtes qui conduisent à des plans sous-optimaux, et sur la façon d'utiliser des astuces et des guides de plan pour les contourner.

Quelques restrictions

Bien qu'il s'agisse d'une référence globale assez complète sur le réglage des requêtes, il y avait quelques choses qui, selon moi, auraient pu être améliorées :

  • Benjamin parle de la collecte d'informations ShowPlan à partir d'événements de suivi et d'événements étendus, et souligne à juste titre que Profiler n'est pas la façon dont vous souhaitez exécuter des suivis, en raison de la surcharge de performances épouvantable et bien documentée. C'est une bonne chose, car la trace est obsolète et Profiler est ce que les gens utilisent généralement par défaut. Il y a un avertissement mineur concernant la surcharge du query_post_execution_showplan événement, qui, je pense, aurait pu être mis un peu plus l'accent, avec des rappels que cela ne devrait être utilisé que pour un réglage et un dépannage très ciblés. La collecte de ces informations pour chaque requête de votre charge de travail est susceptible de faire plus de mal que de bien.
  • Il discute des index filtrés et des statistiques, mais passe sous silence le fait qu'ils sont problématiques lorsqu'il s'agit de mises à jour automatiques, car aucun algorithme spécial n'est utilisé même si l'index ne représente qu'un sous-ensemble de la table. Microsoft a confirmé qu'il s'agit d'un problème, mais à ce stade, ils n'ont pas l'intention de le résoudre. Pour plus d'informations, voir Connect #509638 et Connect #333532. Consultez également cet article de blog pour de nombreuses autres limitations d'index filtré à prendre en compte.
  • Bien que la couverture des fonctionnalités de 2014 soit assez complète, j'ai été surpris de ne trouver aucune mention de sys.dm_exec_query_profiles , un nouveau DMV pour suivre la progression des requêtes en temps réel - jusqu'à l'opérateur individuel. Ce ne sont pas des informations essentielles pour tout le monde, car ce n'est pas un cas d'utilisation extrêmement large (à mon humble avis, ce n'est vraiment utile que pour les requêtes particulièrement longues).
  • Il s'agit d'un point noir total, mais c'est un point courant parmi les titres techniques :l'index est légèrement inexact. Par exemple, la référence à SQL Sentry Plan Explorer pointe vers la page 13, mais le contenu pertinent se trouve en fait à la page 14. Comme je l'ai dit, très mineur, cela m'a juste marqué parce que c'était la toute première chose que j'ai regardée dans l'index. :-)

Je ne considérerais pas ces plaintes, en soi. Aucun livre ne peut contenir tous les détails sur tout. Veuillez donc les considérer comme des addenda. :-)

Résumé

C'est rapidement devenu une référence pratique pour moi; les oreilles de chien remplacent déjà plusieurs de mes signets vers des articles de blog qui mentionnent un détail obscur ou un indicateur de trace, et dans de nombreux cas, Benjamin l'a décrit plus en détail et/ou l'a encadré avec un meilleur contexte. Entre ce livre et quelques titres référencés ci-dessous, je pense que toute personne familiarisée avec T-SQL pourrait se familiariser assez rapidement, même sans aucune connaissance de l'optimiseur avant de plonger.

Matériel complémentaire

D'autres livres que je recommanderais pour compléter ce titre :

  • Ajustement des performances des requêtes SQL Server de Grant Fritchey
  • L'indexation experte des performances de Jason Strate pour SQL Server 2012
  • Plans d'exécution SQL Server de Grant Fritchey

Et bien sûr, il existe une quantité infinie de billets de blog et d'autres articles pour vous aider à comprendre le réglage et l'optimisation. Je suis un peu partisan du matériel de Paul White – ils sont à peu près aussi profonds que les mortels voudraient aller, mais vous pouvez également en tirer une tonne en les parcourant simplement. Grant et Gail Shaw ont également un contenu précieux sur les requêtes et les plans d'exécution, et Kimberly Tripp et Erin Stellato sont d'excellentes ressources pour tout ce qui concerne les index ou les statistiques.

  • Paul White :SQLPerformance.com | sql.kiwi
  • Grant Fritchey (et ressources)
  • Gail Shaw
  • Kimberly Tripp
  • Erin Stellato

Vous pouvez trouver des chevauchements, mais je suis un grand partisan de la consommation d'informations provenant de plusieurs sources. Parfois, ils présentent les mêmes informations, mais l'ampoule s'allume en fonction de la façon dont une personne l'a dit ou du contexte qu'elle a donné. J'ai aussi probablement manqué environ 50 autres personnes avec du bon matériel.

Oh, et ai-je mentionné que notre outil gratuit, Plan Explorer, peut également vous aider ? Mon kit de démonstration mis à jour présente un tas d'exemples.