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

Webinarium Plan Explorer 3.0 — próbki i pytania i odpowiedzi

W zeszły piątek przeprowadziłem seminarium internetowe na temat Plan Explorer 3.0, nowych funkcji i dlaczego zdecydowaliśmy się wyeliminować edycję PRO i rozdać wszystkie funkcje za darmo . Jeśli go przegapiłeś, możesz obejrzeć webinarium tutaj:

    Webinarium dotyczące Eksploratora planu 3.0

Zgłoszono wiele wspaniałych pytań, na które postaram się odpowiedzieć tutaj. Zadaliśmy również kilka własnych pytań w różnych momentach prezentacji, a użytkownicy pytali o ich szczegóły, więc zacznę od pytań z ankiety. Mieliśmy szczyt 502 uczestników, a na poniższych wykresach wskażę, ile osób odpowiedziało na każde pytanie. Ponieważ pierwsze pytanie zostało zadane przed technicznym rozpoczęciem webinaru, na nie odpowiedziała mniejsza liczba osób.

Pytania odbiorców

P:Czy próbki kodu są dostępne?

O: Tak, trzy pliki sesji, których użyłem do moich demonstracji, są dostępne tutaj:

    Prezentacje webinarów Plan Explorer 3.0

Możesz je otworzyć w najnowszej kompilacji programu Plan Explorer, ale jeśli chcesz ponownie uruchomić dowolne z zapytań lokalnie, będziesz potrzebować AdventureWorks2014 (ze skryptem powiększającym Jonathana Kehayiasa) i/lub nowej przykładowej bazy danych Wide World Importers.

P:Czyli wszystko, co pokazano dzisiaj, znajduje się w nowym, ujednoliconym, bezpłatnym Eksploratorze planów? Jeśli tak, jaki jest nowy model przychodów Twojej firmy?

O: Zawsze jestem zaskoczony, gdy spotykam ludzi, którzy uważają, że wszystko, co oferujemy, to Eksplorator Planów (widzę je osobiście, a także kilka podobnych komentarzy pojawiło się w poście Grega). Nasz prawdziwy chleb i masło znajduje się na naszej platformie monitorującej i mamy nadzieję, że Twoje pozytywne doświadczenia z Plan Explorerem sprawią, że wypróbujesz również nasze inne rozwiązania.

P:Nadal korzystamy z SQL Server 2008. Czy istnieją korzyści z używania PE w porównaniu z SSMS?

O: Tak, chociaż przegapisz niektóre funkcje (takie jak profil Live Query), dostępnych jest znacznie więcej informacji w porównaniu z SSMS, a my robimy wszystko, aby konkretne problemy były znacznie łatwiejsze do wykrycia.

P:Czy profil zapytań na żywo będzie działał w przypadku SQL Server 2014?

O: Tak, pod warunkiem zastosowania dodatku Service Pack 1, ponieważ funkcja ta opiera się na DMV, który został dodany w dodatku SP1 dla SQL Server 2014.

P:Jakie są ograniczenia dotyczące SQL Server 2012? Czy mogę w ogóle używać tego narzędzia?

O: Absolutnie. Ograniczenie, o którym wspomniałem podczas webinaru dotyczącego SQL Server 2012 i niższych, polega na tym, że nie są one w stanie przechwycić danych profilu Live Query.

P:Czy dane są zbierane tylko dla SQL Server 2014 i nowszych? Co się stanie, jeśli zainstalowany jest SQL Server 2014, ale zgodność jest ustawiona na 2012?

O: Tak, profil zapytania na żywo (i wykresy zasobów) działa w SQL Server 2014 (z co najmniej SP1), SQL Server 2016 i Azure SQL Database. Nie ma na to wpływu poziom zgodności.

P:Która wersja SQL Server jest potrzebna do odzyskania informacji ze statystyk oczekiwania?

O: Zbieranie statystyk oczekiwania opiera się na sesji Extended Events, więc musisz działać w oparciu o SQL Server 2008 lub nowszy i wykonywać w kontekście użytkownika lub loginu z wystarczającymi uprawnieniami, aby utworzyć i usunąć sesję Extended Events (CONTROL SERVER w SQL Server 2008 i 2008 R2 oraz ALTER ANY EVENT SESSION w SQL Server 2012 i nowszych).

P:Jak wyświetlić wykresy analizy indeksów lub profili zapytań na żywo?

O: Było wiele wariacji na temat tych dwóch pytań i sądząc po ich dźwiękach, ludzie aktywnie bawili się nową wersją podczas webinaru i nie widzieli ani danych analizy indeksu, ani danych profilu zapytań na żywo. Jeśli masz istniejący plan przechwycony z programu SSMS lub wcześniejszej wersji Eksploratora planów, nie będzie żadnych informacji do wyświetlenia.

W celu zebrania Analizy indeksu danych, musisz wygenerować szacowany lub rzeczywisty plan z poziomu Eksploratora planów. Aby zobaczyć siatkę kolumn i indeksów, musisz wybrać Wybraną operację:w menu rozwijanym u góry zakładki Analiza indeksu.

Aby zebrać profil zapytania na żywo danych, musisz wygenerować rzeczywisty plan z poziomu Eksploratora planów i działaj w wersji 2014 SP1 lub nowszej. Musisz również upewnić się, że wybrałeś opcję „Z profilem zapytania na żywo” (patrz obraz po prawej) i poczekać na zakończenie wykonywania zapytania, zanim wykresy zostaną wyrenderowane. W przyszłej wersji wykresy będą renderowane w czasie rzeczywistym, ale w tej wersji robimy to po zebraniu wszystkich danych.

P:Czy profil Live Query działa ze sklonowanymi bazami danych w SQL Server 2014 SP2?

O: Tak, to zadziała, ale nie dostarczy zbyt wielu informacji, ponieważ sklonowana baza danych jest pusta — w planie zobaczysz prawidłowe szacunki, ale wszystkie wartości rzeczywiste będą wynosić 0, więc metryki czasu wykonywania nie będą reprezentować żadnych realistycznych lub znaczące wąskie gardła. Chyba że zapełniasz klon alternatywnymi danymi, jak promuje Erin Stellato we wcześniejszym poście. Pamiętaj również, że jeśli chcesz, aby plany zapytań odzwierciedlały rzeczywiste rozmiary danych produkcyjnych, upewnij się, że wszystkie formy statystyk automatycznych są wyłączone, w przeciwnym razie zostaną one zaktualizowane podczas uruchamiania zapytań, a wszystkie szacunki będą wynosić 0.

P:Czy nowa wersja programu Plan Explorer działa z SQL Server 2016?

O: Tak. Obsługujemy wszystkie nowe operatory planów SQL Server 2016 i inne zmiany w planach (zobacz mój post „Obsługa Eksploratora planów dla SQL Server 2016”), a dodatek działa również z najnowszą wersją SSMS (zobacz mój post, „Ogłaszamy obsługę dodatku Plan Explorer dla programu SSMS 2016”).

P:Więc nawet rzeczywisty plan wykonania w SSMS jest oznaczony jako szacowany koszty?

O: Tak to prawda. Po przechwyceniu danych profilu zapytania na żywo możemy zmienić wartości procentowe kosztów dla wszystkich operatorów, ponieważ wiemy z dużą dokładnością, ile rzeczywistej pracy wykonała każda operacja (jednak zapytanie musi działać dłużej niż określony próg). Może to być szczególnie przydatne w przypadku rozwiązywania problemów we/wy, ponieważ szacunki nigdy nie uwzględniają wąskich gardeł we/wy. Poniższa grafika przechodzi przez oryginalne szacunki (zawsze możemy pokazać, co powiedziałby SSMS), wartości rzeczywiste po ponownej kalkulacji oraz wartości rzeczywiste po ponownej kalkulacji i zmianie kosztów na „według I/O”, a "według rozmiaru danych":

P:Kiedyś otwierałem swój plan stworzony przez SSMS w Eksploratorze planów, ale z tego, co właśnie pokazał Aaron, czy dobrze zrozumiałem, że powinienem uruchamiać moje zapytania (podczas strojenia) z Eksploratora planów?

O: Odpowiedziałem na to pytanie podczas webinaru, ale żeby było jasne, uważam, że ewolucja zapytania składa się z dwóch etapów:(1) zapewnienie poprawnych wyników i (2) optymalizacja wydajności. Jestem głęboko przekonany, że obecnie powinieneś używać SSMS dla (1) i Plan Explorer dla (2). Od dawna promuję, że gdy ludzie są pewni, że mają prawidłowe wyniki, powinni dostroić, generując rzeczywiste plany wykonania z poziomu Eksploratora planów, ponieważ zbieramy dla Ciebie o wiele więcej informacji o czasie wykonywania. Te informacje o środowisku wykonawczym są szczególnie przydatne, jeśli udostępniasz swoje plany w naszej witrynie pytań i odpowiedzi, ponieważ dzięki temu wszystkie metryki i potencjalne wąskie gardła są znacznie bardziej widoczne.

P:Jakie są wartości procentowe poniżej operatora… na przykład 2,885% poniżej funkcji?

O: Ta wartość procentowa nie jest kosztem, ale raczej odsetkiem wierszy, które zostały faktycznie przetworzone w porównaniu z oszacowaniem. W tym przypadku SQL Server oszacował, że funkcja zwróci 10 000 wierszy, ale w czasie wykonywania zwróciła blisko 300 000! Możesz zobaczyć podpowiedź, jeśli najedziesz tylko na tę liczbę %, i możesz zobaczyć różnice w oszacowaniu liczby wierszy w podpowiedzi dla operatora lub w innych siatkach, takich jak Najważniejsze operacje (funkcja zwraca teraz inną liczbę wierszy niż wcześniej podczas demonstracji):

P:Czy możesz zminimalizować lub ukryć część powtórki, aby mieć więcej nieruchomości dla samego planu?

O: Tak, wszystkie nasze panele są regulowane; wiele z nich ma pinezkę, która przełącza między statycznym i automatycznym ukrywaniem, większość paneli można przeciągać (tak jak w Visual Studio, SSMS itp.), a panel odtwarzania w szczególności ma małą strzałkę w górnej środkowej części, która pozwala aby szybko pokazać/ukryć:

P:Czy możesz zobaczyć obraźliwy blok kodu bezpośrednio z planu?

O: Nie jestem pewien, czy poprawnie interpretuję pytanie, ale wszystkie nasze panele są zależne od kontekstu, a oświadczenie dla aktualnie badanego planu jest wyświetlane zarówno w siatce Oświadczenia, jak i w panelu Dane tekstowe:

Jeśli tekst instrukcji nie jest w pełni widoczny ze względu na długość, zawsze możesz kliknąć tę komórkę prawym przyciskiem myszy i wybrać opcję Kopiuj instrukcję do polecenia Kopiuj tekst polecenia, a następnie przejść do tej karty. Lub, jeśli nie chcesz nadpisywać bieżącej zawartości karty Tekst polecenia, wybierz polecenie Kopiuj> Komórka i wklej do nowej sesji, programu SSMS lub innego edytora.

P:Jak mogę zatrzymać „Pobierz aktualny plan”, jeśli przez pomyłkę uruchomiłem 1-godzinne zapytanie?

O: Jeśli zapytanie jest aktualnie uruchomione, na pasku stanu w lewym dolnym rogu znajduje się przycisk Zatrzymaj:

P:Czy nie byłoby lepiej użyć DROP_EXISTING =ON zamiast najpierw opuszczać indeks i tworzyć nowy?

O: Zdecydowanie planujemy ulepszyć skrypty indeksowania w przyszłości, w tym opcje takie jak DROP_EXISTING i ONLINE.

P:Czy to wiąże się z SentryOne?

O: Cała funkcjonalność Plan Explorera jest również dostępna w SentryOne Client. Z technicznego punktu widzenia nie musisz instalować programu Plan Explorer, jeśli masz klienta, z wyjątkiem tego, że aktualizacje są przesyłane według innego harmonogramu, więc w wielu przypadkach sensowne może być zainstalowanie obu.

Pamiętaj, że plany, które zbieramy dla Ciebie podczas działań monitorujących, są planami szacunkowymi, ze względu na wysoki koszt zbierania rzeczywistych planów dla wszystkich zapytań działających na serwerze. Oznacza to, że jeśli przejdziesz do zebranego planu w kliencie, nie będzie on zawierał dodatkowych informacji, takich jak analiza indeksu i dane profilu zapytania na żywo. Zawsze możesz uruchomić zapytanie ponownie, interaktywnie, aby uzyskać dodatkowe dane wykonawcze.

P:Jakie jest obciążenie wydajnościowe tych nowych funkcji?

O: Większość gromadzonych przez nas informacji nie jest droższa niż w przypadku uruchomienia tych samych zapytań i zebrania tych samych danych wykonawczych z Management Studio (np. z włączonymi SHOWPLAN, STATISTICS TIME i STATISTICS IO). Wiele z tego jest jednak równoważone przez nasze domyślne zachowanie odrzucania wyników, więc nie obciążamy serwera wysiłkiem związanym z przesyłaniem wyników do naszej aplikacji.

W przypadku bardzo złożonych planów działających w oparciu o bazy danych o bardzo złożonych schematach i DUŻO indeksów zbieranie indeksów i statystyk może być mniej wydajne, ale jest bardzo mało prawdopodobne, aby miało to zauważalny wpływ na istniejące obciążenia. Nie ma na to wpływu liczba wierszy w tabeli, o której wspomniano w jednym z wariantów tego pytania.

W przypadku naprawdę długotrwałych lub wymagających dużej ilości zasobów zapytań moim największym zmartwieniem byłaby nasza kolekcja profili zapytań na żywo. Mamy dwie preferencje, które mogą w tym pomóc:czy domyślnie uwzględniać profil Live Query ze wszystkimi rzeczywistymi generowaniem planu i jaki interwał zbierania danych z DMV. Chociaż nadal uważam, że obciążenie tej kolekcji nigdy nie powinno zbliżać się do obciążenia samego zapytania, możesz dostosować te ustawienia, aby kolekcja była mniej agresywna.

To powiedziawszy, z zastrzeżeniem, że wszystko powinno być wykonywane z umiarem, nie zauważyłem żadnych problemów związanych z narzutem na gromadzenie danych i nie zawahałbym się użyć pełnej funkcjonalności przeciwko instancji produkcyjnej.

P:Czy jest tam coś, co pomaga w tworzeniu filtrowanych indeksów?

O: Obecnie nie mamy żadnej funkcji, która zalecałaby filtrowane indeksy, ale zdecydowanie jest to na naszym radarze.

P:Czy planujesz dodać funkcję porównywania planów zapytań do Eksploratora planów?

O: Tak, z pewnością było to na naszej mapie drogowej na długo przed wprowadzeniem tej funkcji w SSMS. :-) Nie spieszymy się i zbudujemy zestaw funkcji, którego, miejmy nadzieję, oczekujesz od nas.

P:Czy możesz użyć pakietów SSIS do określenia wydajności pakietu?

O: Przypuszczam, że możesz, jeśli wywołasz pakiet lub zadanie przez T-SQL na serwerze (Plan Explorer nie ma możliwości bezpośredniego uruchamiania takich rzeczy jak pakiety SSIS). Ale aplikacja pokaże tylko aspekty wydajności, które są widoczne przez SQL Server — jeśli w pakiecie SSIS występują nieefektywności, które nie są związane z wykonaniem na SQL Server (powiedzmy, nieskończona pętla w zadaniu skryptu), jesteśmy nie będziemy w stanie ich odebrać, ponieważ nie mamy widoczności i nie przeprowadzamy żadnej analizy kodu.

P:Czy możesz szybko pokazać, jak korzystać z funkcji analizy zakleszczeń?

O: Brakowało mi tego pytania podczas webinaru, ale mówię o tej funkcjonalności w moim Demo Kit, Jonathan Kehayias napisał o tym tutaj na blogu, Steve Wright ma na ten temat film na YouTube, a oficjalną dokumentację można przejrzeć w przewodniku użytkownika PE.

P:Czy można tego używać jak Profiler? Czy mogę przeanalizować całe obciążenie pracą?

O: Plan Explorer ma na celu pomóc w analizie poszczególnych zapytań i planów ich wykonania. Mamy w pełni funkcjonalną platformę monitorującą dla większych działań o określonym zakresie, a także dostępnych jest kilka narzędzi do analizy obciążenia innych firm.

P:Dostrajanie zapytań jest dla mnie bardzo nowe – czy możesz zasugerować narzędzia i artykuły do ​​głębszego zrozumienia?

O: Istnieje wiele zasobów pozwalających na lepsze dostrajanie zapytań:

  • Każda książka T-SQL autorstwa Itzika Ben-Gana, Granta Fritcheya lub Benjamina Nevareza;
  • Wszelkie posty na blogu autorstwa Paula White'a lub Roba Farleya;
  • Pytania i odpowiedzi tutaj na answer.sqlperformance.com lub powyżej w dba.stackexchange.com;
  • Zapytaj filmy dotyczące dostrajania w serwisie YouTube;
  • Zestaw demonstracyjny (wkrótce nowa wersja!); oraz,
  • Praktyka . Poważnie. Możesz przeczytać wszystkie książki i artykuły, które chcesz, ale bez praktycznego, praktycznego rozwiązywania problemów i ulepszania problematycznych zapytań z rzeczywistymi problemami z wydajnością trudno będzie zostać ekspertem. IMHO.

Podsumowanie

Dziękujemy za udział w seminarium internetowym i bardzo dziękuję za wszystkie wspaniałe pytania. Przykro mi, że nie udało mi się odpowiedzieć na wszystkie, ale mam nadzieję, że mimo wszystko było to pomocne. Jeśli masz pytanie, na które nie odpowiedziałem powyżej, możesz je zadać bezpośrednio pod adresem [email protected].


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Halloweenowy problem – część 1

  2. Jak uzyskać ostatni dzień miesiąca w T-SQL?

  3. Jak obliczyć wartość bezwzględną w SQL?

  4. Migracja klastra Cassandra

  5. COVID-19 Gotowość w ScaleGrid