Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wskaźniki wydajności serwera SQL pozwalające wyprzedzić konkurencję

„Doc, martwię się o wydajność mojego serwera SQL”.

Nie było to coś, co słyszy się od większości pacjentów. Ale potem, jako płatny profesjonalista, zostałem przeszkolony, aby radzić sobie z tym wszystkim — nawet w trudnych czasach bycia administratorem bazy danych.

"Naprawdę? Zbadajmy to, dobrze?”

– Jasne, doktorze. Mam na myśli, że czasami wydaje się to tak przytłaczające. Myślałem, że wszystko po prostu samo się ułoży, kiedy się do tego zobowiążę. Ale zanim się zorientowałem, zacząłem mieć problemy z wydajnością w SQL Server 2012, potem 2014, a potem 2017. Nie chcę nawet myśleć o SQL Server 2019”.

"Widzę. Cóż, dobre relacje z SQL Server nie powstają same z siebie. Musisz nad tym popracować. Powiedz mi, czy pracowałeś nad technikami dostrajania wydajności SQL Server?”

– Eee, nie, doktorze. Tak naprawdę nie znam żadnej z tych technik”.

"Nie martw się. Możemy nad nimi popracować. Twój SQL Server prawdopodobnie czuje się zaniedbany. Musisz mieć na to oko, aby mieć pewność, że wyprzedzisz grę. To wymaga monitorowania SQL Server”.

„Monitorowanie? Jak to robisz?”

„Musisz pokazać SQL Server, że Ci zależy. Musisz zwracać uwagę na pewne metryki. Nad tym też możemy popracować”.

„OK, doktorze. Cokolwiek powiesz. W tym momencie jestem gotów spróbować wszystkiego. Nie mogło być gorzej niż teraz”.

"Dobrze więc. Zaczynajmy."

Wskaźniki wydajności SQL Server — wiele ruchomych części

Pacjent miał rację:monitorowanie wydajności SQL Server może wydawać się przytłaczające. Nie możesz przestać zwracać na to uwagi, gdy jest już uruchomiony. Musisz nadal okazywać, że Ci zależy.

SQL Server zawiera wiele ruchomych części, które stale generują metryki. Wiedza, które z nich oglądać, a następnie poświęcenie czasu na ich monitorowanie może być bardzo pracochłonna dla administratora.

Przeszedłem więc z pacjentem przez niektóre z głównych obszarów metryk wydajności SQL Server.

Indeksy

Jednym z pierwszych miejsc, w których należy szukać, gdy masz problemy z wydajnością programu SQL Server, są indeksy. Twoje dane stale rosną, więc Twoje indeksy również stale rosną. Ale podlegają one warunkom, takim jak fragmentacja i podziały stron, które mogą spowolnić odpowiedź na zapytania.

Co dzień w dzień dzieje się w bazie danych? Użytkownicy tworzą, edytują i usuwają rekordy. Indeksy nadążają za miejscami, w których znajdują się wszystkie fragmenty rekordów, ale z czasem fragmentacja indeksów utrudnia wydajność.

Następnie jest współczynnik wypełnienia indeksu, parametr, który można skonfigurować w SQL Server, aby kontrolować liczbę podziałów stron i zwiększyć wydajność zapytań. Ale równowaga między większą i mniejszą liczbą podziałów stron wpływa na wydajność w inny sposób.

Oglądanie danych w współczynniku wypełnienia , I/O i fragmentacja to dobry sposób, aby trzymać rękę na pulsie kondycji indeksu SQL Server.

Buforowa pamięć podręczna

Uprośćmy to:dysk, wolno; pamięć podręczna bufora, szybko. Bufor bufora to kopia w pamięci ostatnio używanych stron bazy danych. Jeśli SQL Server nie znajdzie tam tego, czego szuka, musi go znaleźć na dysku, co spowalnia wydajność.

SQL Server pozwala określić ilość pamięci systemowej, która ma zostać przydzielona do bufora pamięci podręcznej, ale rezygnujesz z pamięci pozostawionej na inne zadania. Twoim celem jest przydzielenie jak największej ilości bez ograniczania wydajności SQL Server w innych obszarach.

Ważna jest również oczekiwana długość życia strony, czyli czas, przez jaki strona informacji z bazy danych spędza w buforze bez ponownego dostępu. SQL Server nieustannie usuwa strony z pamięci podręcznej bufora, aby zrobić miejsce na ostatnio używane. Ale im mniej przydatnych stron tam znajdzie, tym więcej musi odczytać z dysku, co spowalnia wydajność.

Dane takie jak długość życia strony i stosunek udanych trafień w buforze podręcznym pomóc w podejmowaniu decyzji o rzadszym eksmisjowaniu stron lub zwiększeniu rozmiaru pamięci podręcznej.

T-SQL

SQL Server używa języka zapytań o nazwie T-SQL. Zamiast uruchamiać instrukcje SQL ad hoc, SQL Server stara się poprawić wydajność poprzez ich grupowanie, kompilowanie jako plan wykonania i buforowanie. Stara się również minimalizować częstotliwość kompilacji i ponownego wykorzystania planów wykonania tak często, jak to możliwe. Jeśli nie może ponownie wykorzystać planu wykonania — powiedzmy, ponieważ baza danych uległa zbyt dużym zmianom — wówczas ponownie skompiluje plan. Najlepiej, aby liczba ponownych kompilacji instrukcji SQL była jak najmniejsza, ponieważ proces ten może zużywać duże ilości procesora i obniżać wydajność.

Konieczność kompilacji i ponownej kompilacji jest funkcją dobrych praktyk kodowania, takich jak korzystanie z procedur składowanych i parametryzowanie zapytań. Administratorzy baz danych, którzy monitorują wskaźniki, takie jak częstotliwość kompilacji SQL i ponowne kompilacje SQL może modyfikować wskazówki dotyczące zapytań programu SQL Server w celu poprawy wydajności.

Blokuje, czeka i blokuje procesy

Odkrycie, że ktoś inny modyfikuje coś w tym samym czasie, co ty, jest frustrujące. Dlatego bazy danych automatycznie blokują takie elementy, jak rzędy i tabele, aby wielu kucharzy nie wchodziło do kuchni. Kompromisem dla tej ochrony jest oczywiście to, że wszyscy inni użytkownicy muszą poczekać, aż zasób zostanie odblokowany. I trudno jest upewnić się, że blokowanie odbywa się tylko na wymaganym poziomie.

Dzięki metrykom, które pokazują, jak często i w jakim stopniu blokady wpływają na inne operacje, administratorzy baz danych mogą określić zapotrzebowanie na więcej fizycznych zasobów systemowych w celu szybszego przetwarzania transakcji. Może się również zdarzyć, że SQL Server blokuje się na niepotrzebnie niskim poziomie. Częstotliwość czekania na blokadę a szerzej, liczba zablokowanych procesów może pomóc w zlokalizowaniu wąskich gardeł.

Wyeliminuj wąskie gardła dzięki dostrajaniu wydajności SQL

– O rany, doktorze, masz rację co do wszystkich ruchomych części. Teraz widzę, że nie mogę po prostu zainstalować SQL Server, ustawić go i zapomnieć. Muszę pielęgnować związek. Ale to wszystko nadal wydaje się przytłaczające. Jak mam kiedykolwiek zachować tak wiele różnych rzeczy i wyprzedzić grę?”

„To najlepsza część. Istnieją narzędzia, które mogą pomóc w zwiększeniu wydajności programu SQL Server. Nie musisz robić tego sam”.

„Uff! To uspokaja. Nie wiedziałem o tym”.

"Zgadza się. Narzędzia monitorują wydajność serwera SQL i raportują wszystkie te metryki, dzięki czemu można zastosować techniki strojenia i wyeliminować wąskie gardła”.

„Naprawdę?”

"Pewnie. I możemy popracować nad tymi właściwymi – o rany, nie mamy czasu na ten tydzień. Umów się na spotkanie z recepcjonistką i odbierzemy w przyszłym tygodniu”.

„Chłopcze, te cztery godziny minęły szybko, doktorze! Czas z pewnością leci, gdy rozwiązujesz problemy z wydajnością związane z fragmentacją, wykorzystaniem zasobów i współczynnik trafień w pamięci podręcznej bufora , prawda?”

„Tak i jestem pewien, że kiedy otwarcie poinformujesz o tych problemach z serwerem SQL, wszystkie Twoje problemy z wydajnością przejdą do historii”.

Pokrzepiony naszą sesją pacjent wyszedł. Następnym razem będziemy pracować nad monitorowaniem wąskich gardeł wydajności SQL Server. Napiszę o tym na blogu, więc miej oko.

Tymczasem zaufaj mi. Jestem płatnym profesjonalistą i zachęcam do wypróbowania tych rzeczy we własnej relacji z bazą danych. Spraw, aby Twój SQL Server był pożądany. Zwróć uwagę na jego wskaźniki wydajności.

Nigdy nie jest za późno, aby spróbować.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień domyślny format daty i godziny w pojedynczej bazie danych w SQL Server

  2. Czy mogę uzyskać nazwy wszystkich tabel bazy danych SQL Server w aplikacji C#?

  3. Przesunięcie wiersza w SQL Server

  4. Jak mogę porównać czas w SQL Server?

  5. SQL — wywołanie procedury składowanej dla każdego rekordu