Kłóciłem się z DBA i kilkoma facetami od sprzętu o problemy z wydajnością na naszym serwerze SQL. Normalnie wszystko jest w porządku, jednak w ciągu ostatnich kilku tygodni mieliśmy ogromne opóźnienia w serwerze SQL. Oczywiste jest, że SQL Server czeka na dysku we / wy. Ale ciągle słyszę, że to dlatego, że SQL Server prosi o nienormalnie wysokie operacje we / wy. Tak nie jest. Z tego, co się dzieje, widzę, że nie ma nic nienormalnego, a wszystkim, na co DBA patrzy, jest to, co powoduje blokowanie i tak dalej, co jest bezużyteczne. Na przykład najważniejszą rzeczą, którą widzimy podczas tworzenia kopii zapasowej, jest działanie w bazie danych ASPState, której używamy do zarządzania stanem sesji ASP na serwerach internetowych. Operacje te zwykle nie są widoczne dla aktywnych wyników Sp_who2, ponieważ występują tak szybko. Baza danych znajduje się w prostym trybie odzyskiwania, a rejestrowanie jest nielegalne. Jednak podczas tych skoków opóźnienia widzimy wiele operacji wyboru i aktualizacji bazy danych, które są blokowane lub czekają. Jestem pewien, że dzieje się tak, że ktoś lub jakieś zadanie wykonuje coś, co powoduje ciężkie użycie dysku w macierzach RAID używanych dla dzienników baz danych i plików danych. Problem polega na tym, że nikt nie chce przyznać, że robi coś, co zabija naszą stronę internetową.
Moje pytanie dotyczy tego, jakie liczniki wydajności lub cokolwiek mogę zarejestrować, co pomoże pokazać, że serwer SQL czeka na operacje we / wy, ale nie dlatego, że prosi o więcej niż normalnie, ponieważ dysk jest zajęty, aby odpowiedzieć na żądania serwera SQL tak szybko jak zwykle?
źródło
Odpowiedzi:
Spójrz na następujące liczniki perfmon:
Page lookups/sec
Page reads/sec
Readahead pages/sec
Full Scans/sec
Range Scans/sec
Skipped Ghosted Records/sec
Page IO latch waits
Program SQL Server sterujący dużą liczbą żądań We / Wy zostałby potwierdzony skanowaniem dużej liczby, wzrostem liczby wyszukiwań stron i odczytów stron oraz oczekiwaniem na zatrzaśnięcie We / Wy strony. Warto spojrzeć na
sys.dm_exec_query_stats
wpisy o wysokiej liczbie odczytów fizycznych. Mogą szybko wskazać winowajcę.Zasadniczo podejście do problemu jako do rozwiązania problemu z wydajnością, właściwe jest zastosowanie metodologii takiej jak oczekiwania i kolejki . Ty, DBA, wydajesz się postępować właściwie, więc powinieneś go słuchać.
źródło
IO Data Bytes/sec
i sprawdzić, czy jakiś inny proces zaśmiecać dysku.Aby zacząć korzystać z zapytań diagnostycznych Glenna Berry'ego i SP_Whoisactive Adama Machanica, aby dowiedzieć się, co się naprawdę dzieje.
Najpierw sprawdź, które pliki bazy danych mają najwięcej wąskich gardeł we / wy, uruchamiając to zapytanie (zapytanie Glenna Berry'ego)
Następnie uruchom to zapytanie, aby zobaczyć dziesięć najważniejszych zdarzeń, na które czeka Twój serwer (zapytanie Jonathana Kehayiasa ). Podobne zapytanie znajdziesz również w zapytaniach diagnostycznych Glenn Berry.
Gdy będziesz mieć te informacje pod ręką, znacznie łatwiej będzie rozwiązać problem.
BTW możesz znaleźć wiele postów na temat używania sp_whoisactive do rozwiązywania problemów tutaj.
źródło
„Problemem jest udowodnienie tego”, słusznie powiedział. Spójrz na SQL Server: Minimalizuj dysk I / O
Mówi o śledzeniu DMV
Bibliografia:
źródło