Mein Exemplar von Microsoft SQL Server 2014 Query Tuning &Optimization (auch auf Kindle erhältlich) von Benjamin Nevarez ist letzte Woche angekommen. Ich konnte es nicht sofort erreichen, aber am Wochenende konnte ich es zwischen Windelwechseln und einem Ausflug in den Zoo endlich durchqueren.
TL;DR :Das Geld wert
Benjamin präsentiert eine gründliche Erklärung des gesamten Abfrageoptimierungsprozesses und viele Hintergrundinformationen, die Sie benötigen, um dem Ganzen einen Sinn zu geben. Er behandelt Indizes, Statistiken und Plan-Caching sowie den Umgang mit häufigen Problemen wie Parameter-Sniffing. Er erklärt beliebte Optionen wie Optimize for Ad Hoc Workloads und Forced Parametrierung und wie sie die Art und Weise ändern, wie Pläne zwischengespeichert und wiederverwendet werden. Er bespricht auch viele undokumentierte Features und Trace-Flags, die Ihnen helfen können, den Ansatz von SQL Server für Ihre Abfrage besser zu verstehen (oder zu erzwingen), und wie Sie Trace-, Extended Events- und DBCC-Befehle verwenden, um die vom Optimierer getroffenen Entscheidungen und deren Auswirkungen zu überprüfen. hatte.
Es gibt auch einen großen Teil des Inhalts, der vielen neuen Funktionen von SQL Server 2014 gewidmet ist, darunter In-Memory OLTP („Hekaton“), gruppierte Columnstore-Indizes, inkrementelle Statistiken und der neue Kardinalitätsschätzer. Als das Buch geschrieben wurde, waren die AdventureWorks-Beispieldatenbanken für SQL Server 2014 noch nicht veröffentlicht, aber sie sind jetzt verfügbar.
Das Buch endet mit einem komplexen, aber informativen Kapitel über Einschränkungen des Abfrageoptimierers, die zu suboptimalen Plänen führen, und wie man sie mit Hinweisen und Planleitfäden umgeht.
Einige Einschränkungen
Obwohl es sich um eine ziemlich vollständige Referenz zur Abfrageoptimierung handelt, gab es ein paar Dinge, von denen ich dachte, dass sie besser hätten sein können:
- Benjamin spricht über das Sammeln von ShowPlan-Informationen aus Ablaufverfolgungs- und erweiterten Ereignissen und weist zu Recht darauf hin, dass Profiler aufgrund des horrenden und gut dokumentierten Leistungsaufwands nicht die Art und Weise ist, wie Sie Ablaufverfolgungen ausführen möchten. Dies ist eine gute Sache, da Trace veraltet ist und Profiler das ist, was die Leute normalerweise standardmäßig verwenden. Es gibt eine kleine Warnung zum Overhead des
query_post_execution_showplan
Ereignis, das meiner Meinung nach etwas mehr betont werden könnte, mit der Erinnerung, dass dies nur für sehr gezieltes Tuning und Fehlerbehebung verwendet werden sollte. Wenn Sie dies für jede Abfrage in Ihrem Workload sammeln, wird dies wahrscheinlich mehr schaden als nützen.
- Er geht auf gefilterte Indizes und Statistiken ein, beschönigt aber, dass sie problematisch sind, wenn es um automatische Updates geht, da kein spezieller Algorithmus verwendet wird, obwohl der Index nur eine Teilmenge der Tabelle darstellt. Microsoft hat bestätigt, dass dies ein Problem ist, aber zu diesem Zeitpunkt haben sie keine Pläne, es zu beheben. Weitere Informationen finden Sie unter Connect #509638 und Connect #333532. Sehen Sie sich auch diesen Blog-Beitrag an, um viele andere Beschränkungen für gefilterte Indizes zu berücksichtigen.
- Obwohl die Abdeckung der Funktionen von 2014 ziemlich umfassend war, war ich überrascht, dass
sys.dm_exec_query_profiles
nicht erwähnt wurde , ein neues DMV zum Verfolgen des Abfragefortschritts in Echtzeit – bis hinunter zum einzelnen Operator. Es sind jedoch keine wesentlichen Informationen für alle, da es sich nicht um einen extrem breiten Anwendungsfall handelt (IMHO ist es nur für besonders lang andauernde Abfragen wirklich nützlich).
- Dies ist ein totaler Nitpick, aber es ist einer, der bei technischen Titeln üblich ist:Der Index ist etwas ungenau. Zum Beispiel verweist der Verweis auf den SQL Sentry Plan Explorer auf Seite 13, aber der relevante Inhalt befindet sich tatsächlich auf Seite 14. Wie ich schon sagte, sehr kleiner Spitzfindigkeit, es fiel mir einfach auf, weil das das allererste war, wonach ich schaute oben im Index. :-)
Ich würde diese Beschwerden per se nicht berücksichtigen. Kein Buch kann jedes kleinste Detail über alles enthalten. Bitte beachten Sie diese Ergänzungen. :-)
Zusammenfassung
Dies ist schnell zu einer bequemen Referenz für mich geworden; Die Eselsohren ersetzen bereits mehrere meiner Lesezeichen für Blog-Posts, die zufällig ein obskures Detail oder eine Ablaufverfolgungsflagge erwähnen, und in vielen Fällen hat Benjamin es detaillierter beschrieben und/oder es mit einem besseren Kontext versehen. Ich denke, dass jeder, der mit T-SQL vertraut ist, mit diesem Buch und einigen der unten aufgeführten Titel ziemlich schnell auf dem Laufenden sein könnte, selbst wenn er keine Ahnung vom Optimierer hat, bevor er einsteigt.
Ergänzende Materialien
Andere Bücher, die ich empfehlen würde, um diesen Titel zu ergänzen:
- Grant Fritchey's SQL Server Query Performance Tuning
- Expert Performance Indexing von Jason Strate für SQL Server 2012
- Grant Fritcheys SQL Server-Ausführungspläne
Und natürlich gibt es ein endloses Angebot an Blogbeiträgen und anderen Artikeln, die Ihnen helfen, Tuning und Optimierung besser zu verstehen. Ich habe eine gewisse Vorliebe für das Material von Paul White – sie sind ungefähr so tief, wie Sterbliche jemals wollen würden, aber Sie können auch eine Menge aus ihnen herausholen, indem Sie sie einfach nur überfliegen. Grant und Gail Shaw haben auch einige wertvolle Inhalte zu Abfragen und Ausführungsplänen, und Kimberly Tripp und Erin Stellato sind großartige Ressourcen für alles, was mit Indizes oder Statistiken zu tun hat.
- Paul White:SQLPerformance.com | sql.kiwi
- Grant Fritchey (und Ressourcen)
- Gail Shaw
- Kimberly Tripp
- Erin Stellato
Sie werden vielleicht einige Überschneidungen feststellen, aber ich glaube fest daran, Informationen aus mehreren Quellen zu konsumieren. Manchmal präsentieren sie die gleichen Informationen, aber die Glühbirne klickt, je nachdem, wie eine Person es gesagt hat oder welchen Kontext sie gegeben hat. Ich habe wahrscheinlich auch etwa 50 andere Leute mit großartigem Material verpasst.
Oh, und habe ich erwähnt, dass unser kostenloses Tool Plan Explorer auch dabei helfen kann? Mein aktualisiertes Demo-Kit geht durch eine Reihe von Beispielen.