2011-03-21 5 views
5

Mam DB SQL 2005 uruchomiony w środowisku wirtualnym.Jaki jest najlepszy sposób porównania 2 wariantów zapytania SQL dla wydajności?

Aby uprościć rzeczy, załóżmy, że mam dwa zapytania SQL SELECT. Obaj robią dokładnie to samo. Ale próbuję je przeanalizować dla celów wydajności.

Generalnie, uruchamiam lokalną bazę danych, ładuję niektóre dane i używam taktowania, aby porównać jeden wariant z innymi wariantami.

Ale w tym przypadku, ponieważ DB jest duży i jest to testbox, klient umieścił go na hoście, który obsługuje również inne maszyny wirtualne.

DB jest zbyt duży, by można go było ściągnąć lokalnie, więc nie ma go (przynajmniej na razie).

Ale moim głównym problemem jest to, że po uruchomieniu kwerend na serwerze, czas jest wszędzie. Mogę uruchomić + dokładnie + to samo zapytanie 4 razy i uzyskać czasy 7sek, 8 minut, 3: 45 minut i 15 minut.

Moją pierwszą myślą było użycie USTAW STATYSTYKI IO WŁ.

Ale to daje zasadniczo statystyki odczytu i zapisu na tabelach będących kwerendami, które, w zależności od odmian zapytań (tabele tymczasowe, widoki, połączenia itp.) Nie mogą być dokładnie porównane, z wyjątkiem agregat.

W takim razie ustawiam STATISTICS TIME ON i używam czasu procesora, ale wydaje się, że pomijam wszystkie IO, co również nie zapewnia dobrej linii bazowej.

Moje pytanie brzmi: czy istnieje inna technika statystyczna lub analiza wydajności, która mogłaby być przydatna w takiej sytuacji?

+0

Jako * bardzo * proste porównanie, można uruchomić je w tej samej serii z planem wykonania spektaklu i sprawdzić, który z nich zajmuje najwięcej całkowitego udziału procentowego. – adrianbanks

+0

@adrian Plan wykonania jest tylko przewodnikiem. szacowany koszt poddrzewienia A vs B często jest nieprawidłowy, gdy faktycznie został przeprowadzony – RichardTheKiwi

+0

@Richard: Czy to prawda, nawet przy użyciu rzeczywistego planu wykonania? – adrianbanks

Odpowiedz

1

Informacje o statystykach IO będą nadal przydatne. Możesz zobaczyć znacząco różne liczby odczytów, zapisów i skanów, które sprawią, że będzie oczywiste, które zapytanie jest lepsze.

Można również wyświetlić informacje o planie wykonania dla każdego zapytania. Możesz wybrać Zapytanie -> Wyświetlaj estymowany plan wykonania, aby zobaczyć graficzną prezentację estymatora SQL Server, aby uruchomić zapytanie. Możesz również użyć Zapytania -> Uwzględnij rzeczywisty plan wykonania, aby wyświetlić rzeczywisty plan.

Możesz także użyć SET SHOWPLAN_TEXT, SET SHOWPLAN_ALL lub SET SHOWPLAN_XML, aby dołączyć plan wykonania, aby wyświetlić tekstowy widok planu.

Podczas przeglądania wyników planu wykonania można sprawdzić szacunkową wartość kosztu i porównać wartości dla każdego zapytania. Szacowany koszt to względna wartość, którą można wykorzystać do porównania kosztów każdej opcji.

+0

Pracowałem z graficznymi planami, ale porównywanie ich, szczególnie, gdy porównywane zapytania znacznie różnią się od siebie, wydaje się porównywaniem jabłek do pomarańczy i trudno je porównać, gdy te plany graficzne mogą być dość duże. Patrząc na ShowPlan_Text, to może trochę lepiej. Nie grałem wcześniej z tym. Popatrzę też bardziej na tę szacunkową wartość kosztu. Dzięki! – DarinH

+0

Mam zamiar dać Bobsowi akceptowaną odpowiedź, ale nadal mam nadzieję, że istnieje bardziej proste podejście. Jednak pod koniec dnia staram się zainstalować dysk TB lub 2 TB w moim komputerze, dzięki czemu mogę testować lokalnie i być z nim gotowym. – DarinH

Powiązane problemy