Analyze Query in Database Engine Tuning Advisor

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Ett av verktygen som länge har följt med till SQL Server är “Database Tuning Advisor” eller DTA som man oftare säger. Det vanligaste sätter man använder DTA på är att först skapa en tracefil och sedan använda denna, för att i slutändan få en lista på rekommendationer samt skript genererade. Det avslöjar sig ganska snabbt om man har försökt använda detta verktyg för att optimera sin miljö eftersom alla nya ändringar får en viss namnstandard som vi kommer se längre ned.

Förutom en tracefil går det också att markera en sql-fråga, klicka höger mus och sedan välja menyalternativet “Analyze Query in Database Engine Tuning Advisor” för att använda DTA.

 

 

Tyvärr är inte detta verktyg vidare smart och kan ställa till det rejält, som jag visar av detta exempel.

Jag har en befintlig fråga som returnerar 201 rader och ger detta resultat:

Table ‘Fact_Demo’. Scan count 4, logical reads 53393 … …

 SQL Server Execution Times:    CPU time = 890 ms,  elapsed time = 977 ms.

 

DTA ger rekommendationen att skapa ett nytt index samt en mängd uppdatering av statistiken för tabellen ovan dvs Fact_Demo.

CREATE NONCLUSTERED INDEX [_dta_index_Fact__demo_10_1655676946__K1_K11_K13_K3_K2_K19_K10_

K17_K4_K18_K14_K15_K20_K23_24_25_26] ON [dbo].[Fact_demo] (  [Col1] ASC,  [Col2] ASC,  [Col3] ASC,  [Col4] ASC,  [Col5] ASC,  [Col6] ASC,  [Col7] ASC,  [Col8] ASC,  [Col9] ASC,  [Col10] ASC,  [Col11] ASC,  [Col12] ASC,  [Col13] ASC,  [Col14] ASC ) INCLUDE ( [Col15], [Col16], [Col17] ) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [Demo]

Efter ha implementerat alla ändringar som DTA föreslår så får jag nu detta resultat när jag kör frågan igen:

Table ‘Fact_Demo’. Scan count 406, logical reads 158390 … …

 SQL Server Execution Times:    CPU time = 60466 ms,  elapsed time = 64033 ms.

Detta innebär en klar försämring på ungefär 65 gånger efter ha litat blint på detta verktyg och inte riktigt vad man ville :-).

Bättre är då att lära sig om hur man optimerar sin miljö istället för att lita blint sådana här verktyg och ett sätt ätt göra detta är förstås att kontakta oss.

Vi ser alltför ofta nämligen en mängd index med namn som börjar med “_dta_index…” och dessa är troligen inte de mest optimala som vi har sett av exemplet ovan.