Utrzymanie wysokowydajnego serwera SQL Server ma kluczowe znaczenie nie tylko dla operacji Twojej organizacji, ale także dla klientów. Gdy serwery reagują wolno — lub w ogóle nie odpowiadają — tracisz interes. Oto trzy kluczowe obszary, które należy ściśle monitorować, aby zapewnić optymalną wydajność programu SQL Server, oraz sposoby poprawy wydajności, jeśli metryki wskazują, że masz problem.
Indeksy
Jeśli Twoje indeksy działają dobrze, przyczyniają się do szybkiego i płynnego działania systemu. Jeśli jednak Twoje indeksy cierpią z powodu którejkolwiek z tych typowych problemów, może to mieć negatywny wpływ na wydajność programu SQL Server.
Wskaźnik do monitorowania:współczynnik wypełnienia
Współczynnik wypełnienia to ustawienie w SQL Server, które instruuje indeksy, aby wypełnić każdą stronę X procent. Wydaje się intuicyjne, że chciałbyś wypełnić każdą stronę w 100 procentach, ale w rzeczywistości przepełnienie stron może powodować podziały stron. Jeśli administrator doda dodatkowy wiersz do pełnej strony, nowy wiersz wypycha około połowy istniejących wierszy na nową stronę, a nowy wiersz jest dodawany na dole pierwszej strony.
Podziały stron mogą powodować problemy z wydajnością ze względu na zwiększoną liczbę operacji we/wy i możliwość fragmentacji. Jednak zbyt duża ilość miejsca na stronie może również obniżyć wydajność, ponieważ zasoby są niepotrzebnie zużywane.
Aby uzyskać najlepsze wyniki wydajności z ustawień współczynnika wypełnienia, nie ustawiaj wartości dla całego systemu. Spójrz na swoje indeksy indywidualnie i ustaw współczynnik wypełnienia na odpowiednim poziomie dla każdego. Na przykład indeksy, które są często pofragmentowane, wymagają innej wartości współczynnika wypełnienia niż indeksy, które rzadko są używane.
Wskaźnik do monitorowania:fragmentacja
Fragmentacja indeksu występuje, gdy użytkownicy dodają i usuwają rekordy. Przenoszenie rzeczy jest normalną częścią codziennych operacji bazy danych, ale z czasem fragmentacja wpływa na wydajność. Fragmentacja może powodować kilka problemów:
- Zbyt dużo pustego miejsca na zbyt wielu stronach spowalnia skanowanie i niepotrzebnie zużywa pamięć
- Nowe strony są dodawane niewłaściwie, więc znalezienie danych zajmuje serwerowi więcej czasu
Gdy fragmentacja zacznie wpływać na wydajność, należy uruchomić Odbuduj lub Reorganizuj, aby wyczyścić pofragmentowane indeksy. Uruchomienie przebudowy spowoduje utworzenie nowego indeksu i usunięcie dodatkowej pustej przestrzeni. Reorganize porządkuje strony liści, aby serwer mógł łatwiej znaleźć dane.
Pamięć podręczna
Gdy SQL Server może odczytywać strony w buforze buforowym, czas odpowiedzi będzie krótszy. Wydajność spada, gdy serwer musi przejść na dysk, aby znaleźć stronę, ponieważ musi wykonać szereg kroków przed zapisaniem strony w buforze, a następnie jej odczytaniem. Istnieje kilka wskaźników, które możesz śledzić, które pomogą utrzymać pamięć podręczną bufora działającą z najwyższą wydajnością.
Wskaźnik do monitorowania:oczekiwana długość życia strony
Oczekiwana długość życia strony (PLE) to czas, przez jaki strona pozostaje w pamięci podręcznej bufora bez wywołania, zanim zostanie wysłana z powrotem na dysk. Zwiększenie PLE poprawi wydajność, ale wykorzystuje również pamięć, która może być potrzebna do innych funkcji. Jeśli zamierzasz dostosować PLE, musisz dowiedzieć się, ile pamięci możesz wykorzystać bez wpływu na wydajność w innym miejscu.
Wskaźnik do monitorowania:współczynnik trafień w pamięci podręcznej bufora
Współczynnik trafień w pamięci podręcznej bufora to odsetek stron znajdujących się w puli buforów w stosunku do wszystkich żądań stron. Współczynnik trafień w pamięci podręcznej bufora powinien wynosić powyżej 90, aby uzyskać najlepszą wydajność (tj. SQL Server nie musi odczytywać z dysku). Zachowaj ostrożność podczas analizowania danych dotyczących współczynnika trafień w pamięci podręcznej bufora. Niewielki spadek wskaźnika może nie wskazywać na prawdziwy problem. Przeanalizuj dane w połączeniu z PLE, aby ustalić, czy istnieje rzeczywisty problem z wydajnością.
Optymalizacja zapytań
Powolne i mało wydajne zapytania to jeden z najczęstszych problemów z wydajnością programu SQL Server. Istnieje wiele możliwych przyczyn, dla których Twoje zapytania nie działają prawidłowo, więc określenie dokładnej przyczyny może być trudne. Jest jednak kilka rzeczy, które możesz wypróbować na wczesnym etapie dochodzenia, które mogą poprawić wydajność zapytań przy minimalnym wysiłku.
Wskaźnik do monitorowania:skanowanie indeksu
Sprawdzanie kondycji serwera SQL powinno być stałym elementem Twoich obowiązków DBA. Gdy zapytania działają powoli, poświęć trochę więcej czasu na optymalizator zapytań. Jedną z ważnych rzeczy do sprawdzenia jest to, czy skanowanie indeksu SQL Server ma jakieś problemy, które musisz rozwiązać.
Innym potencjalnym zabójcą wydajności jest skanowanie indeksu wykonywane częściej niż to konieczne. Skanowanie indeksu trwa znacznie dłużej niż wyszukiwanie indeksu, ponieważ zapytanie musi skanować każdy wiersz w poszukiwaniu przydatnych danych. Skonfiguruj optymalizator zapytań tak, aby wyszukiwał indeksy częściej niż je skanował.
Przepisanie problematycznego zapytania to kolejny sposób na zwiększenie wydajności. Czasami uproszczenie zapytań usunie część, która powoduje, że zapytanie się zacina. Możesz także spróbować dodać indeksy, aby przyspieszyć zapytania, ale w niektórych przypadkach działa to lepiej niż w innych.
Dodawanie indeksów jest dobrym rozwiązaniem dla pól zaangażowanych w wyszukiwanie, grupowanie lub sortowanie; często odwiedzane pola; oraz pola o unikalnych wartościach. Ogólnie rzecz biorąc, dodawanie indeksów do pól ze zduplikowanymi wartościami, takimi jak tak/nie lub dla małych tabel, nie jest skuteczne.
Monitorowanie wydajności programu SQL Server ma kluczowe znaczenie dla utrzymywania wysokowydajnych baz danych. Utrzymanie najwyższej szybkości działania serwera SQL Server można osiągnąć tylko dzięki starannej dbałości o metryki wydajności. Dodaj omówione powyżej metryki do listy kontrolnej konserwacji, aby wcześnie zidentyfikować i naprawić problemy z wydajnością SQL Server.