Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


10.06.2019

Inteligentne zarządzanie...

W dniach 11, 12 i 13 czerwca – odpowiednio – w Gdańsku, w Warszawie i w Katowicach,...
27.05.2019

Rozwiązania na platformie GCP

Citrix SD-WAN i Citrix ADC
27.05.2019

Chmura hybrydowa

Dell Technologies Cloud
27.05.2019

Uproszczona komunikacja

Cisco Webex
24.05.2019

Konferencja IT Manager of...

W dniach 12–14 czerwca w Sopocie odbędzie się konferencja IT Manager of Tomorrow 2019. To...
24.05.2019

Ochrona sieci

Fortinet FortiOS 6.2
24.05.2019

Mniejsza złożoność

Rittal VX25 Ri4Power
24.05.2019

All-in-one NAS

QNAP TDS-16489U R2
24.05.2019

Układy SoC

AMD Ryzen Embedded R1000

Optymalizacja wydajności zapytań SQL

Data publikacji: 23-05-2019 Autor: Marcin Szeliga
Rys. 1. Dashboard wydajności...

Jedną z najważniejszych cech serwera baz danych jest szybkość, z jaką wykonuje on zapytania użytkowników. Dlatego producenci nieustannie poprawiają wydajność swoich serwerów. Wydajność zapytań bezpośrednio zależy od optymalizatora zapytań, czyli modułu serwera odpowiedzialnego za znalezienie wystarczająco dobrego planu wykonania zapytania, oraz od modułu wykonującego zapytania według znalezionych planów. Oba te moduły są regularnie aktualizowane.

 

Optymalizator zapytań został całkowicie zmieniony w wersji 2014 serwera SQL. Wszystkie później wydane wersje serwera SQL, tj. wersje 2016, 2017 i 2019, zawierają poprawki i ulepszenia nowego optymalizatora zapytań. Zmiany w module wykonywania zapytań są rzadsze. W wersji 2017 dodano funkcje automatycznej optymalizacji oraz adaptacyjnego wykonywania zapytań.

Pomimo pracy włożonej w udoskonalanie obu tych modułów nie zawsze i nie wszystkie zapytania wykonywane są szybko. W takich wypadkach od administratorów oczekuje się wykrycia i usunięcia przyczyn ich nieoptymalnego wykonania. Żeby to zrobić, potrzebne są odpowiednie, łatwe w użyciu i jednocześnie skuteczne narzędzia. Dlatego trzecim, wciąż udoskonalanym modułem serwerów bazodanowych są narzędzia, takie jak konsola SQL Ser­ver Management Studio (SSMS).

Celem artykułu jest przedstawienie nowych funkcji konsoli SSMS, pomagających diagnozować i rozwiązywać problemy z wydajnością zapytań. W artykule została użyta wersja zapoznawcza konsoli SSMS v18, ale niektóre z opisywanych funkcji są dostępne już w wersji v17. Co istotne, najnowszą wersję konsoli SSMS można pobrać ze strony Microsoftu i można jej używać do pracy z wcześniejszymi wersjami serwera SQL. Dotyczy to również funkcji optymalizacji wydajności.

> RAPORT WYDAJNOŚCI

W wersji 17.2 konsola SSMS zyskała nowe raporty pozwalające ocenić wydajność serwera. Główny raport wydajności wyświetlimy przez kliknięcie prawym przyciskiem myszy w widoczną w okienku eksploratora obiektów nazwę serwera SQL i wybranie z menu kontekstowego polecenia Reports/Standard Reports/Performance Dashbord (rys. 1).

Główny raport wydajności został podzielony na pięć sekcji:
 

  •  W lewym górnym rogu pokazana jest historia użycia procesów przez serwer SQL i pozostałe procesy. Ten jeden z nielicznych statycznych wykresów pozwala szybko ocenić, czy serwer dysponuje wystarczającą mocą obliczeniową.
  •  W lewym dolnym rogu znajdziemy informacje o bieżących sesjach i żądaniach użytkowników. Listę aktywnych użytkowników oraz nawiązanych przez nich sesji wyświetlimy przez kliknięcie nagłówka odpowiedniej kolumny. Szczegółowe informacje o wykonywanych przez użytkowników operacjach oraz ich sesjach odczytamy przez kliknięcie ich identyfikatorów. Oprócz liczby aktywnych użytkowników i ich sesji znajdziemy w nich procent czasu spędzonego przez serwer SQL na oczekiwaniu na procesor oraz na inne zasoby. W pokazanym na rys. 1 wypadku procesor nie był przyczyną wolnego wykonywania zapytań. Ponieważ 100% potrzebnych danych znajdowało się w pamięci RAM, zwiększenie liczby pamięci również nie poprawiłoby wydajności zapytań.
  • W prawym górnym rogu znajduje się wykres z liczbą bieżących oczekiwań. Zgłaszane przez serwer SQL oczekiwania zostały podzielone na kategorie, takie jak Tran Log IO czy Lock. Do pierwszej z nich przypisano oczekiwania Writelog, LogBuffer, CHKPT i LogMgr_Flush, czyli oczekiwania zgłaszane, gdy serwer czeka na dostęp do pliku dziennika transakcyjnego. Druga kategoria zawiera oczekiwania LCK_%, które są zgłaszane, gdy serwer SQL oczekuje na zablokowanie zasobu.
  • Znajdująca się poniżej wykresu bieżących oczekiwań sekcja z informacjami historycznymi zawiera odnośniki do dziewięciu raportów.


– Raport oczekiwań odnotowanych od czasu uruchomienia serwera (lub wyczyszczenia statystyk). Oczekiwania podzielone są na kategorie; raport zawiera całkowity czas i liczbę wystąpień oczekiwań (rys. 2).

– Raport zatrzasków odnotowanych od czasu uruchomienia serwera. Serwer SQL zatrzaskuje wewnętrzne obiekty, takie jak transakcje czy bufory danych, w celu synchronizacji dostępu do nich. Zatrzaski również zostały podzielone na kategorie.

– Raport statystyk operacji I/O. Oprócz informacji o liczbie i czasie trwania operacji odczytu i zapisu w poszczególnych bazach danych i ich plikach znajdziemy też czas oczekiwań zgłoszonych podczas wykonywania operacji I/O. Uzupełnieniem raportu jest lista tabel odpowiadających za najwięcej operacji I/O w poszczególnych bazach.

– Pozostałych sześć odnośników prowadzi do raportów z opisami dwudziestu najkosztowniejszych zapytań. Pierwszy – do opisu dwudziestu zapytań, które najsilniej obciążyły procesor, drugi – do opisu zapytań, które odczytały najwięcej danych, itd. Oprócz treści zapytań poznamy statystyki opisujące ich wykonanie.

 

  • Ostatnia sekcja zawiera odnośniki do raportów z podstawowymi informacjami na temat aktywnych sesji monitorowania serwera SQL oraz konfiguracji baz danych.


> MAGAZYN ZAPYTAŃ

Magazyn zapytań zadebiutował w wersji 2016 serwera SQL. Po włączeniu gromadził on dane o wykonywanych w bazie danych zapytaniach, w tym o planach i kosztach ich wykonania. Dodatkowo ułatwiał wymuszenie wykonywania zapytania według wybranego planu. W wersji 2017 została dodana możliwość wybierania zapytań pokazanych w raportach na podstawie zgłoszonych przez nich oczekiwań.

Konsola SSMS od wersji 18.2 zawiera nowy raport pozwalający analizować zapisane w magazynie zapytań dane na podstawie oczekiwań. Po wybraniu kategorii oczekiwań zostanie wyświet­lony raport zawierający wszystkie zapytania, które zgłosiły oczekiwanie tego typu. Wybranie zapytania pozwoli porównać i przeanalizować plany, według których było ono wykonywane (rys. 3).
 

[...]

 

Pracownik naukowy Wyższej Szkoły Bankowej w Poznaniu Wydział Zamiejscowy w Chorzowie; jest autorem książek poświęconych analizie danych i posiada tytuł Microsoft Most Valuable Professional. 

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik "IT Professional"