Database
 sql >> Baza danych >  >> RDS >> Database

Wizualizacja punktu krytycznego za pomocą eksploratora planów

Punkt zwrotny to termin, który po raz pierwszy usłyszałem od guru dostrajania wydajności SQL Server i wieloletniej członkini SentryOne Advisory Board, Kimberly Tripp – ma tutaj świetną serię blogów na ten temat. Punkt krytyczny to próg, przy którym plan zapytania „przeskoczy” od szukania nieobejmującego indeksu nieklastrowanego do skanowania indeksu klastrowego lub sterty. Podstawowa formuła, która nie jest twardą i szybką zasadą, ponieważ istnieje wiele innych czynników wpływających, jest następująca:

  • Skanowanie indeksu klastrowego (lub tabeli) często występuje, gdy szacowane wiersze przekraczają 33% liczby stron w tabeli
  • Wyszukiwanie nieklastrowe oraz wyszukiwanie kluczy często występuje, gdy szacowane wiersze znajdują się poniżej 25% stron w tabeli
  • Pomiędzy 25% a 33% może iść w obie strony

Zwróć uwagę, że istnieją inne „punkty krytyczne” optymalizatora, na przykład gdy zakrycie indeks przeskakuje od wyszukiwania do skanowania lub gdy zapytanie będzie przebiegać równolegle, ale ten, na którym się koncentrujemy, to niepokrywający indeks nieklastrowany scenariusz, ponieważ bywa najczęstszy – ciężko jest odpowiedzieć na każde zapytanie! Jest to również potencjalnie najbardziej niebezpieczne dla wydajności, a gdy słyszysz, że ktoś odnosi się do punktu krytycznego indeksu SQL Server, zwykle to ma na myśli.

Punkt krytyczny we wcześniejszych wersjach Eksploratora planów

Eksplorator planów wcześniej pokazywał efekt netto punktu krytycznego, gdy w Analizie indeksu jest włączone wąchanie parametrów. zakładka, w szczególności za pośrednictwem operacji Szacunkowa (zobrazowana) wiersz w Parametry okienko:

Szacowana operacja dla parametrów skompilowanych i wykonawczych na podstawie liczby wierszy

Jeśli jeszcze nie zapoznałeś się z modułem Analiza indeksów, zachęcam do tego. Chociaż diagram planu i inne funkcje Eksploratora planów są świetne, szczerze mówiąc, analiza indeksów to miejsce, w którym powinieneś spędzać większość czasu podczas dostrajania zapytań i indeksów. Sprawdź tutaj szczegółowy przegląd funkcji i scenariuszy Aarona Bertranda oraz świetny samouczek dotyczący indeksu autorstwa Devona Leanna Wilsona.

Za kulisami wykonujemy matematykę punktu krytycznego i przewidujemy operację indeksowania (wyszukiwanie lub skanowanie) na podstawie szacowanych wierszy i liczby stron w tabeli zarówno dla parametrów skompilowanych, jak i wykonawczych, a następnie kodujemy kolorami powiązane komórki, aby możesz szybko sprawdzić, czy pasują. Jeśli nie, jak w powyższym przykładzie, może to być silnym wskaźnikiem, że masz problem z podsłuchiwaniem parametrów.

Histogram statystyk wykres odzwierciedla rozkład wartości dla klucza wiodącego indeksu przy użyciu kolumn dla równych wierszy (pomarańczowy) i wierszy zakresu (turkusowy). Są to te same wartości, które otrzymasz z DBCC SHOW_STATISTICS lub sys.dm_db_stats_histogram . Części dystrybucji, na które trafiają zarówno parametry skompilowane, jak i wykonawcze, są podświetlone, aby dać przybliżone pojęcie o tym, ile wierszy jest zaangażowanych dla każdego z nich. Po prostu wybierz Wartość skompilowaną lub Wartość czasu działania kolumna, aby zobaczyć wybrany zakres:

Wykres histogramu przedstawiający zakres trafiony przez parametry wykonawcze

Nowe sterowanie i wizualizacje

Powyższe funkcje były fajne, ale od jakiegoś czasu czułem, że możemy zrobić więcej, aby wszystko było jaśniejsze. Tak więc w najnowszej wersji Eksploratora planów (2020.8.7) na dole panelu Parametry znajdują się nowe kontrolki z powiązanymi elementami wizualnymi na wykresie histogramu:

Nowe elementy sterujące wizualizacjami histogramu

Zwróć uwagę, że histogram wyświetlany domyślnie dotyczy indeksu używanego przez zapytanie w celu uzyskania dostępu do wybranej tabeli, ale możesz kliknąć dowolny inny nagłówek indeksu lub kolumnę tabeli w siatce, aby wyświetlić inny histogram.

Zakres punktu krytycznego

Zakres punktów krytycznych pole wyboru przełącza jasnoczerwony pasek pokazany na wykresie histogramu:

Przełącz na zakres zakresu punktów krytycznych

Jeśli oszacowane wiersze są poniżej tego zakresu, optymalizator będzie preferował wyszukiwanie + wyszukiwanie, a powyżej skanowanie tabeli. Każdy może zgadywać.

Szacunkowe (obrazowane)/rzeczywiste wiersze

Wiersze szacunkowe/rzeczywiste pole wyboru przełącza wyświetlanie szacowanych wierszy (z skompilowanych parametrów) i rzeczywistych wierszy (z parametrów wykonawczych). Strzałki na poniższym wykresie ilustrują związek między tą kontrolką a powiązanymi elementami:

Przełącz wiersze szacunkowe i rzeczywiste na wykresie histogramu

W tym przykładzie wyraźnie widać, że szacunkowe wiersze znajdują się poniżej punktu krytycznego, a rzeczywiste zwrócone wiersze znajdują się powyżej niego, co odzwierciedla różnica między wymienionymi operacjami szacowanymi i rzeczywistymi (wyszukiwanie vs skanowanie). To jest klasyczne wąchanie parametrów, zilustrowane!

W przyszłym poście zajmę się tym, w jaki sposób jest to skorelowane z tym, co widzisz na diagramie planu i siatce oświadczeń. W międzyczasie tutaj znajduje się plik sesji programu Plan Explorer, który zawiera ten przykład (podsłuchiwanie parametrów wyszukiwania do skanowania), a także przykład skanowania do skanowania. Oba wykorzystują rozszerzoną bazę danych WideWorldImporters.

Rzędy zakresu lub rzędy średniego zakresu

Wcześniejsze wersje programu Plan Explorer układały równe wiersze i wiersze zakresu w jednej kolumnie, aby przedstawić całkowitą liczbę wierszy w zasobniku histogramu. Działa to dobrze, gdy masz predykat nierówności lub zakresu, jak pokazano powyżej, ale dla predykatów równości nie ma to większego sensu. To, co naprawdę chcesz zobaczyć, to wiersze średniego zakresu, ponieważ właśnie ich użyje optymalizator do oszacowania. Niestety nie było sposobu, aby to uzyskać.

W nowym histogramie Eksploratora planów zamiast skumulowanych serii kolumn używamy teraz kolumn zgrupowanych z równymi wierszami i wierszami zakresu obok siebie, a ty określ, czy odpowiednio wyświetlać sumę lub średnią wierszy zakresu, korzystając z opcji Wiersze zakresu / Wiersze średniego zakresu selektor. Więcej na ten temat wkrótce…

Zawijanie

Jestem bardzo podekscytowany tymi nowymi funkcjami i mam nadzieję, że okażą się przydatne. Wypróbuj je, pobierając nowy Eksplorator planów. To było tylko krótkie wprowadzenie i nie mogę się doczekać omówienia tutaj kilku różnych scenariuszy. Jak zawsze, daj nam znać, co myślisz!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niespodzianki wydajnościowe i założenia :Arbitralne TOP 1

  2. Twój ostateczny przewodnik po SQL Join:INNER JOIN – część 1

  3. Czy ColumnStore może pomóc w obciążeniu stronicowaniem?

  4. Pythonowe interfejsy API REST z Flask, Connexion i SQLAlchemy — część 2

  5. Model danych inteligentnego domu