| Termin | Definicja |
|---|---|
| SQL Server Resource Governor | Resource Governor ogranicza zasoby przydzielane grupom obciążeń, chroniąc instancję przed jednym dominującym procesem. Rola Resource Governora w silniku SQL ServerSQL Server Resource Governor jest mechanizmem aparatu SQL Server Database Engine, który pozwala kontrolować sposób wykorzystywania wybranych zasobów przez obciążenia uruchamiane w instancji. Jego zadaniem jest ograniczenie wpływu jednego rodzaju pracy na pozostałe zadania, na przykład zapytań raportowych wykonywanych równocześnie z operacjami transakcyjnymi. Mechanizm nie przyspiesza samych zapytań i nie zastępuje strojenia indeksów, planów wykonania ani konfiguracji pamięci. Ustala natomiast granice, w których poszczególne grupy żądań mogą korzystać z zasobów instancji. Konfiguracja Resource Governora opiera się przede wszystkim na pulach zasobów i grupach obciążeń. Pula zasobów opisuje dostępny budżet, między innymi dla procesora i pamięci, natomiast grupa obciążeń skupia sesje o podobnym charakterze. Sesja może zostać przypisana do grupy przez funkcję klasyfikującą. Dzięki temu zapytania pochodzące od określonej aplikacji, użytkownika, loginu albo zdefiniowanego kontekstu połączenia mogą podlegać innym ograniczeniom niż pozostałe żądania. Pule zasobów, grupy obciążeń i klasyfikacja sesjiPula zasobów może określać między innymi minimalny i maksymalny udział procesora oraz pamięci dostępny dla należących do niej obciążeń. Grupa obciążeń może dodatkowo definiować parametry dotyczące zapotrzebowania na pamięć dla przydziałów zapytań. W praktyce pozwala to odseparować obciążenie o dużych przydziałach pamięci, takie jak zapytania analityczne z sortowaniem lub agregacją, od krótkich operacji aplikacyjnych. Ograniczenie nie usuwa przyczyny wysokiego zużycia zasobów, ale zmniejsza prawdopodobieństwo, że takie zapytania zdominują całą instancję. Klasyfikacja jest wykonywana podczas nawiązywania sesji i korzysta z funkcji klasyfikującej zdefiniowanej w bazie systemowej. Funkcja może analizować informacje dostępne dla połączenia, takie jak nazwa aplikacji, login, nazwa hosta lub identyfikator sesji. Wynik klasyfikacji wskazuje grupę obciążeń, do której trafia sesja. Istotne jest poprawne zaprojektowanie warunków: zbyt szeroka reguła może skierować wiele niezależnych aplikacji do jednej grupy, a błędny warunek może pozostawić sesje w grupie domyślnej. Sama obecność funkcji klasyfikującej nie oznacza jeszcze, że każda sesja została rozdzielona zgodnie z zamiarem administratora. Parametry ograniczania procesora i pamięciParametry CPU, takie jak MIN_CPU_PERCENT i MAX_CPU_PERCENT, opisują odpowiednio minimalny udział procesora zarezerwowany dla puli oraz maksymalny udział, którego pula nie powinna przekroczyć w ramach konfiguracji Resource Governora. Wartość maksymalna jest limitem zarządzania obciążeniem, a nie gwarancją stałej wydajności pojedynczego zapytania. Rzeczywisty czas wykonania zależy również od blokad, operacji wejścia i wyjścia, dostępności indeksów, planu wykonania oraz konkurencji o inne zasoby. Kontrola pamięci obejmuje między innymi MIN_MEMORY_PERCENT i MAX_MEMORY_PERCENT na poziomie puli oraz REQUEST_MAX_MEMORY_GRANT_PERCENT na poziomie grupy obciążeń. Ostatni parametr ogranicza maksymalny udział pamięci puli, jaki może zostać przyznany pojedynczemu żądaniu zapytania. Zbyt restrykcyjna wartość może spowodować oczekiwanie na przydział pamięci albo wymusić wykonanie operacji z większą liczbą zapisów pośrednich. Zbyt wysoka wartość może natomiast pozwolić pojedynczym zapytaniom zająć znaczną część budżetu pamięci przeznaczonego dla danej grupy. Resource Governor powinien być oceniany razem z rzeczywistym zachowaniem instancji. Do weryfikacji można wykorzystać widoki dynamicznego zarządzania dotyczące konfiguracji Resource Governora, grup obciążeń i puli zasobów, a także dane o oczekiwaniach, przydziałach pamięci oraz czasie procesora. Sama obserwacja ogólnego użycia CPU nie wystarcza do stwierdzenia, czy ograniczenie działa prawidłowo. Należy sprawdzić, do jakiej grupy trafia sesja, jakie limity są aktywne i czy obciążenie faktycznie konsumuje zasoby objęte daną pulą. Bezpieczna zmiana konfiguracji i diagnostyka działaniaZmiana ustawień Resource Governora obejmuje utworzenie lub modyfikację puli zasobów, grupy obciążeń oraz reguł klasyfikacji, a następnie zastosowanie konfiguracji poleceniem ALTER RESOURCE GOVERNOR RECONFIGURE. Przed wdrożeniem zmian należy ustalić, które loginy i aplikacje mają zostać objęte ograniczeniami, oraz sprawdzić, czy sesje administracyjne pozostaną dostępne. Szczególnej ostrożności wymaga funkcja klasyfikująca, ponieważ reguła obejmująca niezamierzone połączenia może zmienić zachowanie dużej części instancji. Diagnostyka problemu powinna rozróżniać błąd konfiguracji od zwykłego przeciążenia zapytania. Jeżeli sesja trafia do niewłaściwej grupy, przyczyną może być niepoprawna nazwa aplikacji, inny login używany przez pulę połączeń albo brak ponownego nawiązania sesji po zmianie reguły klasyfikacji. Jeżeli sesja jest sklasyfikowana poprawnie, ale zapytanie nadal działa długo, ograniczenie może być tylko jednym z czynników: znaczenie mogą mieć blokady, brak odpowiedniego indeksu, nieaktualne statystyki lub kosztowny plan wykonania. Analiza powinna obejmować plan zapytania, zużycie CPU, przydział pamięci i oczekiwania. Resource Governor jest funkcją administracyjną przeznaczoną dla instancji SQL Server i środowisk, w których kilka rodzajów obciążenia współdzieli zasoby silnika. Przy diagnostyce komputera, na którym działa klient SQL Server, można sprawdzić stan usługi, połączenia, konfigurację aplikacji oraz lokalne symptomy przeciążenia, ale parametry pul i grup są ustalane po stronie instancji Database Engine. Wnioski powinny więc jasno oddzielać problem komputera użytkownika od konfiguracji serwera SQL Server i nie przypisywać lokalnemu urządzeniu odpowiedzialności za ograniczenia działające w instancji. |