2010-03-31 16 views
11

Próbuję zrozumieć operatorów fizycznych w planach wykonania SQL Server. Ta strona jest bardzo pomocne:Operatory fizyczne w planach wykonania SQL Server: jakie są ponowne wiązania, przewijanie i liczba wykonań?

http://technet.microsoft.com/en-us/library/ms191158.aspx

SSMS 2008 wykazuje pewne właściwości fizyczne operatora, które nie są wyświetlane w SSMS 2005: Estimated Number of Executions i Number of Executions. Ale co one właściwie oznaczają i jak są powiązane z ponownymi wiązaniami i przewijaniem?

Estimated Number of Executions jest szczególnie interesująca, ponieważ nie wydaje się być przechowywana w pliku XML. Jak to jest obliczane? Wygląda na to, że jest równa Estimated Rebinds + Estimated Rewinds + 1.0. Ale jeśli tak jest, dlaczego Number of Executions nie jest równy Actual Rebinds + Actual Rewinds + 1?

Dzięki.

+0

Wyjaśnia to dobrze w "Wewnątrz Microsoft SQL Server 2005 strojenia i optymalizacji zapytań" Rozdział 3 –

+2

Można to wyjaśnić w tej konkretnej książce, ale nie każdy ma kopię dostępnej książki i/lub chce ją kupić na Amazon . –

+1

@moontear - Lucky, że rozdział ten jest dostępny do bezpłatnego pobrania z witryny ["Strona internetowa SQL Server 2008 Internals"] (http://www.sqlserverinternals.com/companion/), a następnie! –

Odpowiedz

7

Książka jest trochę w tym opisie. Przewijanie i ponowne wiązanie mają zastosowanie tylko w łączeniu pętli. Odnoszą się one do użycia wartości sondy z zewnętrznej części pętli do wewnętrznej części pętli i są odbijane tylko w niektórych operatorach (które są kosztowne, więc warto wiedzieć, jak często są przywoływane). Rebinds and Rewinds powinny bezpośrednio korelować z liczbą wykonań, a nie z liczbą + 1.

Liczba wykonań, szacowana lub rzeczywista, to liczba razy, kiedy operator jest wywoływany. Może to mieć wpływ na wiele rzeczy. Na przykład w łączeniu pętli zobaczysz wiele wywołań do operatorów w zewnętrznej gałęzi odpowiadających bezpośrednio liczbie wierszy w wewnętrznej gałęzi. Zauważysz absolutnie różnice między rzeczywistymi a szacunkowymi.W przypadku pętli (świetny przykład do pobicia) zobaczysz szacunkową wartość jednego w wewnętrznej pętli, ale rzeczywista liczba wykonań będzie, jak już wspomniano, równa liczbie rzędów w zewnętrznym.

+0

'Rewind i Rebind mają zastosowanie tylko w przypadku łączenia pętli' nie są one również odpowiednie dla niektórych szpul? (leniwe szpule mają być konkretne) – Akash

4

Polecam czytanie (i/lub pobieranie) eBook'a SQL Server Execution Plans przez Granta Fritcheya. Pobieranie wydaje się bezpłatne.

Istnieje sekcja o numerach rebinds i do tyłu. Nie jestem ekspertem w tej dziedzinie, dlatego powołuję się na dolny wiersz odpowiedniego rozdziału:

Jak to jest pomocne dla DBA? Ogólnie rzecz biorąc, idealne jest, jeśli liczba ponownego nawiązywania i przewinięcia jest tak niska, jak to możliwe, ponieważ wyższe liczby wynoszą wskazują więcej operacji we/wy dysku. Jeśli liczba jest wysoka, może to oznaczać, że konkretny operator działający w trybie pracuje mocniej niż musi, powodując pogorszenie wydajności serwera . W takim przypadku możliwe będzie przepisanie kwerendy lub zmodyfikowanie bieżącego indeksowania, aby użyć innego planu kwerend, w którym liczba ponownych wiązań i przewinięć zostanie zmniejszona o jeden, zmniejszając liczbę operacji wejścia/wyjścia i zwiększając wydajność. (Str. 83)

liczba wykonań jest wskaźnikiem wyższego poziomu pod względem liczby i ponowne powiązanie przewinięta. Oto kolejny cytat:

Zauważ, że w przeciwieństwie do planów tekstowych, które właśnie wyświetlanych EstimateExecutions plan XML szacunkową liczbę ponowne powiązanie i REWINDS. Dzięki temu można uzyskać dokładniejsze informacje o tym, co zaszło w zapytaniu, na przykład o tym, jak wiele razy operator został wykonany. (str. 103)

Powiązane problemy