| Termin | Definicja |
|---|---|
| Resource Governor | Resource Governor to mechanizm SQL Server ograniczający zasoby przydzielane grupom obciążeń. Resource Governor – czym jest i do czego służyResource Governor to funkcja dostępna w Microsoft SQL Server, która pozwala uporządkować sposób wykorzystywania zasobów przez różne rodzaje pracy wykonywanej w bazie danych. Jej zadaniem nie jest samo przyspieszanie zapytań, lecz kontrolowanie tego, jak procesor i pamięć są rozdzielane pomiędzy określone grupy obciążeń. Dzięki temu można ograniczyć wpływ jednego rodzaju operacji na pozostałe zadania realizowane w tym samym środowisku. W praktyce mechanizm ten przydaje się wtedy, gdy w jednej instancji współistnieją na przykład zapytania użytkowników, importy danych, raporty, zadania utrzymaniowe oraz procesy wykonywane automatycznie. Bez dodatkowych reguł pojedyncze ciężkie zapytanie może przez pewien czas zużywać znaczną część dostępnej mocy obliczeniowej albo pamięci. Resource Governor umożliwia przypisanie takich obciążeń do odpowiednich grup, a następnie określenie zasad korzystania z zasobów. Konfiguracja składa się z kilku logicznie powiązanych elementów. Najpierw definiuje się klasyfikator, czyli regułę rozpoznającą połączenie lub typ wykonywanej pracy. Następnie obciążenie trafia do puli zasobów, w której ustala się parametry dotyczące dostępnej pamięci oraz udziału procesora. Ostatnim elementem jest grupa obciążeń, pozwalająca przypisać podobne zadania do wspólnego zestawu ograniczeń. Taki podział ułatwia przewidywanie zachowania systemu w okresach zwiększonego ruchu. Resource Governor – kontekst techniczny i porównanie z innymi mechanizmamiResource Governor działa na poziomie instancji SQL Server i odnosi się do obciążeń rozpoznawanych podczas obsługi połączeń. Nie jest tym samym co indeks, plan wykonania, priorytet zadania ani ręczne ograniczenie liczby równoległych operacji. Indeks może skrócić czas wyszukiwania danych, poprawiony plan wykonania może zmniejszyć koszt pojedynczego zapytania, a harmonogram zadań może przesunąć raport na mniej obciążoną porę. Resource Governor służy natomiast do ustalenia granic i udziałów zasobów dla większych kategorii pracy. Warto odróżnić go również od ustawień konfiguracyjnych dotyczących całej instancji. Parametry globalne wpływają na ogólne działanie środowiska, natomiast Resource Governor pozwala zastosować odmienne zasady do różnych grup. Z tego powodu może być użyteczny w sytuacji, w której nie powinno się całkowicie blokować raportowania ani importu, ale jednocześnie konieczne jest zachowanie płynności obsługi podstawowych zapytań. Istotne jest rozróżnienie pomiędzy minimalnym udziałem zasobów a wartością maksymalną. Minimalny udział określa poziom, który powinien być dostępny dla danej puli w warunkach rywalizacji. Maksymalny udział wyznacza górną granicę wykorzystania, dzięki czemu określona kategoria pracy nie może zdominować całego środowiska. W praktyce ustawienia te powinny wynikać z obserwacji obciążenia, a nie z przypadkowych wartości. Mechanizm nie zastępuje analizy przyczyn powolnego działania. Jeżeli problem wynika z braku indeksu, niepoprawnego warunku łączenia tabel, nieaktualnych statystyk albo blokad, samo ograniczenie zasobów może jedynie zmienić sposób ujawniania się problemu. Najpierw należy ustalić, czy występuje błąd konstrukcyjny zapytania, nieprawidłowa konfiguracja, przeciążenie sprzętowe czy rzeczywista potrzeba odseparowania różnych obciążeń. Resource Governor – typowe problemy przy konfiguracjiJednym z częstszych problemów jest zbyt ogólna reguła klasyfikacji. Jeżeli wiele połączeń zostanie rozpoznanych w ten sam sposób, do jednej grupy mogą trafić zadania o całkowicie odmiennym charakterze. Raport okresowy, krótka operacja aplikacyjna i duży import danych mogą wtedy konkurować według tych samych zasad, mimo że wymagają innego traktowania. Klasyfikator powinien być możliwie jednoznaczny i oparty na cechach, które da się stabilnie rozpoznać. Ryzyko stanowi także ograniczenie niewłaściwej puli. Zbyt niski limit procesora może wydłużyć działanie zadań, które nie powinny być traktowane jako drugorzędne. Zbyt niski limit pamięci może zwiększyć liczbę operacji odczytu i zapisu, a w konsekwencji pogorszyć wydajność całego środowiska. Nie można zakładać, że każda forma ograniczenia automatycznie poprawia stabilność. Reguła powinna być oceniana razem z czasem odpowiedzi, kolejkami, zużyciem pamięci oraz zachowaniem zapytań. Problematyczna bywa również zmiana ustawień bez wcześniejszego pomiaru. Bez danych porównawczych trudno ocenić, czy poprawa jednego procesu nie odbyła się kosztem innego. Przydatne jest zebranie informacji o czasie trwania zapytań, liczbie równoległych operacji, chwilowym zużyciu procesora, presji pamięci oraz występowaniu blokad. Pomiary należy wykonywać w typowych porach i podczas okresów największego obciążenia. Warto pamiętać, że zasady Resource Governor nie usuwają źródła nieprawidłowości w aplikacji. Jeżeli połączenia są klasyfikowane błędnie, aplikacja nie przekazuje rozpoznawalnych informacji, a zadania cykliczne uruchamiane są bez kontroli, nawet dobrze zaprojektowana pula może działać inaczej od zamierzeń. Dlatego każda zmiana wymaga dokumentacji, testu i możliwości szybkiego powrotu do poprzedniej konfiguracji. Resource Governor – praktyczne wskazówki dotyczące użyciaPrzed wdrożeniem warto przygotować mapę obciążeń. Należy wskazać, które operacje są krytyczne dla codziennego działania aplikacji, które wykonują się cyklicznie, a które mogą poczekać. Pomocne jest także ustalenie, czy obciążenie ma charakter stały, czy pojawia się tylko podczas zamknięcia okresu, generowania zestawień lub masowego zasilania danych. Reguły powinny być wprowadzane stopniowo. Najpierw można rozdzielić najbardziej oczywiste kategorie, a następnie obserwować ich wpływ. Jeżeli po zmianie podstawowe zapytania otrzymują bardziej przewidywalny czas odpowiedzi, a zadania tła nie zakłócają pracy użytkowników, można uznać kierunek za właściwy. W przeciwnym razie należy sprawdzić klasyfikację, limity oraz rzeczywiste zapotrzebowanie poszczególnych procesów. Przydatne jest prowadzenie dziennika zmian zawierającego datę, zakres modyfikacji, powód wdrożenia oraz wyniki pomiarów przed i po zmianie. Takie informacje ułatwiają odróżnienie trwałej poprawy od chwilowej zmiany warunków. Pozwalają też szybciej ustalić, czy pogorszenie pojawiło się po modyfikacji zasad, po aktualizacji aplikacji, po zmianie struktury danych czy po wzroście liczby użytkowników. Resource Governor najlepiej traktować jako część większego planu zarządzania wydajnością. Równolegle należy kontrolować zapytania, indeksy, statystyki, blokady, konfigurację pamięci, harmonogramy zadań oraz stan systemu operacyjnego. Ograniczenia powinny chronić ważne obciążenia, ale nie mogą zastępować regularnej konserwacji i analizy przyczyn spadku wydajności. Resource Governor – kiedy zgłosić się do serwisuPomoc specjalistyczna może być potrzebna, gdy po zmianie konfiguracji pojawia się niestabilny czas odpowiedzi, nieoczekiwane opóźnienie raportów, nagły wzrost zużycia procesora albo problemy z pamięcią. Zgłoszenie warto przygotować wraz z opisem objawów, porą ich występowania, informacją o ostatnich zmianach oraz przykładami operacji, które działają wolniej. Takie dane ułatwiają rozdzielenie problemu z samym Resource Governor od problemu dotyczącego zapytań, aplikacji lub infrastruktury. W ramach konsultacji można przeanalizować logikę klasyfikowania obciążeń, ustawienia pul i grup, zależności pomiędzy limitami oraz wpływ zmian na codzienną pracę. Przydatne bywa również sprawdzenie, czy ograniczenie zasobów nie maskuje błędów w zapytaniach lub niewłaściwego harmonogramu zadań. W Warszawie takie prace wykonuje Warszawskie Pogotowie Komputerowe 24/7, z uwzględnieniem dokumentacji konfiguracji i wyników obserwacji. Przed modyfikacją środowiska należy zabezpieczyć kopię konfiguracji, ustalić zakres zmian i określić sposób weryfikacji rezultatu. Nie powinno się wprowadzać limitów wyłącznie na podstawie pojedynczego pomiaru, ponieważ chwilowe obciążenie może nie odzwierciedlać typowych warunków pracy. Jeżeli problem dotyczy również komputera użytkownika, systemu operacyjnego lub połączenia z bazą, diagnostyka powinna objąć cały łańcuch zależności, a nie tylko ustawienia Resource Governor. |