sql >> Databasteknik >  >> RDS >> Database

Bokrecension:Benjamin Nevarez:Query Tuning &Optimization

Mitt exemplar av Microsoft SQL Server 2014 Query Tuning &Optimization (finns även på Kindle), av Benjamin Nevarez, kom förra veckan. Jag kunde inte komma till det direkt, men under helgen kunde jag äntligen kryssa igenom det mellan blöjbyten och en tur till djurparken.

TL;DR:Värt pengarna

Benjamin presenterar en grundlig förklaring av hela frågeoptimeringsprocessen, och mycket av bakgrunden du behöver för att förstå det hela. Han behandlar index, statistik och plancaching, samt hur man hanterar vanliga problem som parametersniffning. Han förklarar populära alternativ som Optimera för ad hoc-arbetsbelastningar och forcerad parametrering, och hur de ändrar hur planer cachelagras och återanvänds. Han diskuterar också många odokumenterade funktioner och spårningsflaggor som kan hjälpa dig att bättre förstå (eller tvinga fram) SQL Servers tillvägagångssätt för din fråga, och hur man använder Trace, Extended Events och DBCC-kommandon för att granska de beslut som optimeraren hade fattat och vilken effekt de har. har haft.

Det finns också en stor del av innehållet dedikerat till många nya SQL Server 2014-funktioner, inklusive In-Memory OLTP ("Hekaton"), klustrade kolumnbutiksindex, inkrementell statistik och den nya kardinalitetskalkylatorn. När boken skrevs har AdventureWorks exempeldatabaser för SQL Server 2014 ännu inte publicerats, men de är tillgängliga nu.

Boken avslutas med ett komplext men informativt kapitel om begränsningar i frågeoptimeraren som leder till suboptimala planer, och hur man använder tips och planguider för att komma runt dem.

Vissa begränsningar

Även om det var en ganska fullständig övergripande referens till justering av frågor, fanns det ett par saker som jag trodde kunde ha varit bättre:

  • Benjamin pratar om att samla in ShowPlan-information från Trace och Extended Events, och påpekar korrekt att Profiler inte är det sätt du vill köra spår på, på grund av den fasansfulla och väldokumenterade prestandan. Detta är en bra sak, eftersom spårning är utfasad och Profiler är vad folk vanligtvis använder som standard. Det finns en mindre varning om overheaden för query_post_execution_showplan händelse, som jag tycker hade kunnat betonas lite mer, med påminnelser om att detta endast bör användas för mycket riktad inställning och felsökning. Att samla in detta för varje fråga i din arbetsbelastning kommer sannolikt att göra mer skada än nytta.
  • Han diskuterar filtrerade index och statistik, men utesluter att de är problematiska när det gäller automatiska uppdateringar, eftersom det inte finns någon speciell algoritm som används även om indexet bara representerar en delmängd av tabellen. Microsoft har bekräftat att detta är ett problem, men i nuläget har de inga planer på att fixa det. För mer information, se Connect #509638 och Connect #333532. Se även det här blogginlägget för många andra filtrerade indexbegränsningar att överväga.
  • Även om täckningen av 2014 års funktioner var ganska omfattande, blev jag förvånad över att inte hitta något omnämnande av sys.dm_exec_query_profiles , en ny DMV för att spåra frågeförlopp i realtid – ända ner till den enskilda operatören. Det är dock inte viktig information för alla, eftersom det inte är ett extremt brett användningsfall (IMHO det är bara riktigt användbart för särskilt långvariga frågor).
  • Detta är ett totalt nit-val, men det är ett som är vanligt bland tekniska titlar:indexet är något felaktigt. Till exempel pekar hänvisningen till SQL Sentry Plan Explorer till sidan 13, men det relevanta innehållet finns faktiskt på sidan 14. Som jag sa, mycket liten nit-val, det stod bara ut för mig eftersom det var det allra första jag tittade på upp i indexet. :-)

Jag skulle inte överväga dessa klagomål i sig. Ingen bok kan innehålla minsta detalj om allt. Så vänligen överväg dem tillägg. :-)

Sammanfattning

Detta har snabbt blivit en bekväm referens för mig; hundöronen ersätter redan flera av mina bokmärken till blogginlägg som råkar nämna någon obskyr detalj eller spårflagga, och i många fall har Benjamin beskrivit det mer detaljerat och/eller ramat in det med bättre sammanhang. Mellan den här boken och ett par titlar som hänvisas till nedan tror jag att alla som är bekanta med T-SQL skulle kunna komma igång ganska snabbt, till och med ha noll kunskap om optimeraren innan han dyker in.

Kompletterande material

Andra böcker jag skulle rekommendera som komplement till denna titel:

  • Ge Fritcheys SQL Server Query Performance Tuning
  • Jason Strates expertprestandaindexering för SQL Server 2012
  • Bevilja Fritcheys SQL Server Execution Plans

Och naturligtvis finns det ett oändligt utbud av blogginlägg och andra artiklar för att hjälpa dig med din förståelse av justering och optimering. Jag är en del av Paul Whites material – de är ungefär så djupa som dödliga någonsin skulle vilja gå, men du kan få ut massor av dem genom att bara skumma också. Grant och Gail Shaw har också en del värdefullt innehåll om frågor och genomförandeplaner, och Kimberly Tripp och Erin Stellato är fantastiska resurser för allt indexrelaterat eller statistikrelaterat.

  • Paul White:SQLPerformance.com | sql.kiwi
  • Bevilja Fritchey (och resurser)
  • Gail Shaw
  • Kimberly Tripp
  • Erin Stellato

Du kanske hittar en viss överlappning, men jag tror mycket på att konsumera information från flera källor. Ibland presenterar de samma information, men glödlampan klickar baserat på hur en person sa det eller sammanhanget de gav. Jag saknade förmodligen också ett 50-tal andra personer med bra material.

Åh, och nämnde jag att vårt gratisverktyg, Plan Explorer, också kan hjälpa till med detta? Mitt uppdaterade demo-kit går igenom en massa exempel.


  1. Oracle:Uppdatering av en tabellkolumn med ROWNUM i kombination med ORDER BY-satsen

  2. Benchmarking Managed PostgreSQL Cloud Solutions:Del två - Amazon RDS

  3. Hur man säkerhetskopierar en SQL Server-databas med T-SQL

  4. Hur man får alla tabeller som har en primär nyckelbegränsning skapad i SQL Server Database - SQL Server / TSQL Tutorial 57