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

Recenzja książki :Benjamin Nevarez :Dostrajanie i optymalizacja zapytań

Moja kopia Microsoft SQL Server 2014 Query Tuning &Optimization (dostępna również na Kindle), autorstwa Benjamina Nevareza, pojawiła się w zeszłym tygodniu. Nie byłam w stanie się do tego od razu dostać, ale w ciągu weekendu w końcu udało mi się przez to przejść pomiędzy zmianą pieluch i wycieczką do zoo.

TL;DR:Warte swojej ceny

Benjamin przedstawia dokładne wyjaśnienie całego procesu optymalizacji zapytań oraz wiele informacji, których będziesz potrzebować, aby to wszystko zrozumieć. Zajmuje się indeksami, statystykami i cachowaniem planów, a także jak radzić sobie z typowymi problemami, takimi jak podsłuchiwanie parametrów. Wyjaśnia popularne opcje, takie jak Optymalizacja pod kątem obciążeń ad hoc i wymuszona parametryzacja, oraz wyjaśnia, w jaki sposób zmieniają one sposób, w jaki plany są buforowane i ponownie wykorzystywane. Omówił również wiele nieudokumentowanych funkcji i flag śledzenia, które mogą pomóc w lepszym zrozumieniu (lub wymuszenie) podejścia SQL Server do zapytania oraz w jaki sposób używać Trace, Extended Events i DBCC, aby przejrzeć decyzje podjęte przez optymalizator i ich wpływ. miałem.

Istnieje również spora część treści poświęcona wielu nowym funkcjom SQL Server 2014, w tym OLTP w pamięci („Hekaton”), klastrowanym indeksom magazynu kolumn, statystykom przyrostowym i nowemu estymatorowi liczności. W trakcie pisania książki przykładowe bazy danych AdventureWorks dla SQL Server 2014 nie zostały jeszcze opublikowane, ale są już dostępne.

Książka kończy się złożonym, ale pouczającym rozdziałem o ograniczeniach optymalizatora zapytań, które prowadzą do nieoptymalnych planów, oraz o tym, jak używać wskazówek i przewodników po planach, aby je obejść.

Niektóre ograniczenia

Chociaż jest to dość kompletne ogólne odniesienie do dostrajania zapytań, było kilka rzeczy, które moim zdaniem mogły być lepsze:

  • Benjamin mówi o zbieraniu informacji ShowPlan ze śledzenia i zdarzeń rozszerzonych i poprawnie wskazuje, że Profiler nie jest sposobem, w jaki chcesz uruchamiać śledzenie, z powodu horrendalnych i dobrze udokumentowanych narzutów na wydajność. To dobrze, ponieważ trace jest przestarzały, a Profiler jest tym, z czego ludzie zwykle domyślnie korzystają. Istnieje drobne ostrzeżenie dotyczące obciążenia query_post_execution_showplan Wydarzenie, na które moim zdaniem można było położyć nieco większy nacisk, z przypomnieniem, że powinno to być używane tylko do bardzo ukierunkowanego dostrajania i rozwiązywania problemów. Zbieranie tego dla każdego zapytania w obciążeniu prawdopodobnie wyrządzi więcej szkody niż pożytku.
  • Omawia filtrowane indeksy i statystyki, ale pomija fakt, że są one problematyczne, jeśli chodzi o automatyczne aktualizacje, ponieważ nie ma specjalnego algorytmu, mimo że indeks reprezentuje tylko podzbiór tabeli. Microsoft potwierdził, że jest to problem, ale w tym momencie nie planuje go naprawić. Aby uzyskać więcej informacji, zobacz Połącz #509638 i Połącz #333532. Zobacz także ten wpis na blogu, aby zapoznać się z wieloma innymi ograniczeniami filtrowania indeksu, które należy wziąć pod uwagę.
  • Chociaż zakres funkcji 2014 był dość obszerny, byłem zaskoczony, że nie znalazłem żadnej wzmianki o sys.dm_exec_query_profiles , nowy DMV do śledzenia postępu zapytania w czasie rzeczywistym — aż do pojedynczego operatora. Nie jest to jednak niezbędna informacja dla wszystkich, ponieważ nie jest to wyjątkowo szeroki przypadek użycia (IMHO jest naprawdę przydatny tylko w przypadku szczególnie długotrwałych zapytań).
  • To jest totalny drobiazg, ale jest powszechny wśród tytułów technicznych:indeks jest nieco niedokładny. Na przykład odniesienie do SQL Sentry Plan Explorer wskazuje na stronę 13, ale odpowiednia treść znajduje się w rzeczywistości na stronie 14. Jak już powiedziałem, bardzo drobny drobiazg, po prostu wyróżniał się dla mnie, ponieważ była to pierwsza rzecz, na którą spojrzałem w indeksie. :-)

Sama nie brałabym pod uwagę tych skarg. Żadna książka nie jest w stanie opisać wszystkiego w najdrobniejszych szczegółach. Proszę więc o rozważenie ich uzupełnień. :-)

Podsumowanie

Szybko stało się to dla mnie wygodnym odniesieniem; psie uszy już zastępują kilka moich zakładek wpisami na blogu, w których zdarzają się wzmianki o jakichś niejasnych szczegółach lub flagach śledzenia, a w wielu przypadkach Benjamin opisał to bardziej szczegółowo i/lub umieścił w lepszym kontekście. Pomiędzy tą książką a kilkoma tytułami, o których mowa poniżej, myślę, że każdy, kto zna T-SQL, mógłby dość szybko nabrać szybkości, nawet nie mając żadnej wiedzy na temat optymalizatora przed zagłębieniem się w to.

Materiały uzupełniające

Inne książki, które polecam do uzupełnienia tego tytułu:

  • Grant Fritchey dostrajanie wydajności zapytań SQL Server
  • Eksperckie indeksowanie wydajności Jason Strate dla SQL Server 2012
  • Przyznaj plany wykonania SQL Server firmy Fritchey

I oczywiście istnieje nieskończona ilość postów na blogu i innych artykułów, które pomogą Ci zrozumieć, jak dostrajać i optymalizować. Jestem trochę stronniczy w stosunku do materiału Paula White'a – są tak głębokie, jak śmiertelnicy kiedykolwiek chcieliby zagłębić się, ale można się z nich wydobyć, po prostu prześlizgując się. Grant i Gail Shaw mają również cenne treści dotyczące zapytań i planów wykonania, a Kimberly Tripp i Erin Stellato są świetnymi zasobami, jeśli chodzi o wszystko, co dotyczy indeksów lub statystyk.

  • Paul White:SQLPerformance.com | sql.kiwi
  • Przyznaj Fritchey (i zasoby)
  • Gail Shaw
  • Kimberly Tripp
  • Erin Stellato

Możesz znaleźć pewne nakładanie się, ale jestem wielkim zwolennikiem korzystania z informacji z wielu źródeł. Czasami prezentują te same informacje, ale żarówka klika w zależności od tego, jak powiedziała to jedna osoba lub kontekstu, który podała. Prawdopodobnie brakowało mi też około 50 innych osób ze świetnym materiałem.

Aha, czy wspomniałem, że nasze bezpłatne narzędzie, Plan Explorer, też może w tym pomóc? Mój zaktualizowany zestaw demonstracyjny zawiera kilka przykładów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie RDBMS i NoSQL:wprowadzenie do klastra 2DX UI

  2. Optymalizacja nakładających się zapytań Część 1:Wprowadzenie i ulepszone rozwiązanie T-SQL

  3. Tabela rozwiązywania problemów Nie znaleziono błędów

  4. Jak zmienić format daty i godziny w T-SQL

  5. Uruchamiaj skrypty SQL w środowisku Multitenant z catcon.pl