Diagnostyka w programie SQL Server ułatwić wykrycie niezakończone i zatrzymany operacji We/Wy

Streszczenie

System zarządzania bazą danych (DBMS), takie jak SQL Server, opiera się na aktualności pliku wejścia i wyjścia (We/Wy) operacji. Jeden z następujących elementów może powodować zatrzymany lub zatrzymania operacji We/Wy i negatywnie wpływać na wydajność i czas reakcji programu SQL Server:

  • Uszkodzony sprzęt

  • Niepoprawnie skonfigurowany sprzęt

  • Ustawienia oprogramowania układowego

  • Sterowniki filtru

  • Kompresja

  • Błędy

  • Inne warunki w ścieżce we/wy

Te problemy we/wy może powodować następujące zachowanie występuje:

  • Blokowanie

  • Zatrzaśnięcie rywalizacja i limity czasu

  • Długi czas odpowiedzi

  • Rozciąganie granic zasobów

Począwszy od dodatku Service Pack 4 (SP4) dla systemu Microsoft SQL Server 2000, SQL Server zawiera logikę, która pomaga wykrywać zatrzymany i zatrzymany warunki dla bazy danych we/wy odczyty i zapisy i Odczyty We/Wy pliku dziennika i zapisy. Podczas operacji We/Wy został przyjęty przez 15 sekund lub dłużej, program SQL Server wykonuje następujące czynności:

  1. Wykrywa, że operacja został przyjęty

  2. Zapisuje komunikat informacyjny dziennik błędów programu SQL Server

    Tekst komunikatu dziennika podobny do następującego:

Wyjaśnienie komunikat informacyjny

Tekst komunikatu

Opis

<Numer > zamieniono

Liczba żądań We/Wy, które nie zostało ukończone, Odczyt lub operacji zapisu w mniej niż 15 sekund.

Informacje o plikach

Pełnej nazwy pliku, nazwa bazy danych i numer identyfikacyjny (identyfikator DBID) bazy danych.

Uchwyt

Dojście systemu operacyjnego w pliku. Można użyć dojście systemu operacyjnego z debugery lub inne narzędzia służące do śledzenia żądań pakietu (IRP) żądania We/Wy.

Przesunięcie

Przesunięcie ostatniego zatrzymany operacji We/Wy lub ostatniego blokowały operacji We/Wy. Przesunięcie można użyć z debugery lub inne narzędzia ułatwiające śledzenie żądania IRP.

Uwaga Gdy komunikat informacyjny jest zapisywany dziennik błędów programu SQL Server, operacja We/Wy nie jest już może być zatrzymany lub wstrzymana.

Ten komunikat informacyjny wskazuje, że bieżące obciążenie może występować jeden z następujących warunków:

  • Obciążenie przekracza możliwości ścieżkę We/Wy.

  • Obciążenie pracą jest przekroczenie bieżące możliwości systemu.

  • We/Wy ścieżka ma nieprawidłowe działanie oprogramowania; być może oprogramowanie układowe lub wydania sterownika.

  • We/Wy ścieżka ma nieprawidłowe działanie składników sprzętowych.

Aby uzyskać więcej informacji na temat wzorce we/wy programu SQL Server 2000 przejdź do następującej witryny firmy Microsoft:

http://technet.microsoft.com/en-us/library/cc966500.aspxUwaga Ten artykuł TechNet dotyczy również programu Microsoft SQL Server 2005 i nowszych wersjach.

Więcej informacji

Zablokowane We/Wy i niezakończone we/wy

Zablokowane we/wy

Zablokowane we/wy jest definiowana jako żądanie We/Wy, które nie kończy. Często zatrzymany we/wy wskazuje zatrzymany IRP. Aby rozwiązać zatrzymany stan we/wy, musi zazwyczaj ponowne uruchomienie komputera lub wykonać podobne kroki. Zablokowane stan we/wy zazwyczaj wskazuje jedną z następujących czynności:

  • Uszkodzony sprzęt

  • Błąd w składniku ścieżki we/wy

Niezakończone we/wy

Niezakończone we/wy jest definiowana jako żądanie We/Wy, który Zakończ lub który wymaga dodatkowego czasu na zakończenie. Niezakończone zachowanie we/wy zazwyczaj występuje z jednej z następujących przyczyn:

  • Konfiguracja sprzętu

  • Ustawienia oprogramowania układowego

  • Problem sterownika filtru, który wymaga pomocy sprzętu lub dostawcą oprogramowania, aby śledzić i rozpoznawać

Zawiesić we/wy programu SQL Server i zatrzymany we/wy, rejestrowania i raportowania

Obsługa programu Microsoft SQL Server obsługuje wielu przypadkach każdego roku, które dotyczą problemów we/wy zatrzymany lub niezakończone. Te problemy we/wy są wyświetlane na różne sposoby. Problemy we/wy są niektóre z najtrudniejszych problemów, diagnozowanie i debugowania i wymagają dużo czasu i zasobów do debugowania firmy Microsoft i klient. Funkcje raportowania, które zostały dodane do programu SQL Server 2000 z dodatkiem SP4 i w nowszych wersjach znacznie skrócić czas wymagany do identyfikacji problemu z we/wy.

Zgłaszanie i rejestrowanie żądań We/Wy są przeznaczone na zasadzie jeden plik. Wykrywanie i raportowanie niezakończone i zablokowane żądania We/Wy są dwa oddzielne działania.

Nagrywanie

Istnieją dwa momenty, gdy wystąpi akcja rekordu w programie SQL Server. Pierwsza jest po zakończeniu operacji We/Wy w rzeczywistości. Jeśli żądanie We/Wy trwa więcej niż 15 sekund, aby zakończyć, operacja rekordu występuje. Drugi moment jest po uruchomieniu opóźnieniem. Po uruchomieniu opóźnieniem opóźnieniem sprawdza wszystkie oczekujące dane i wszystkie oczekujące dziennika żądania We/Wy pliku. Przekroczenie progu 15-sekundowy występuje operacji rekordu.

Zgłoszenie

Zgłoszenie występuje w odstępach czasu, które są od siebie 5 minut lub więcej. Zgłoszenie występuje po nawiązaniu następnego żądania We/Wy na pliku. Jeśli wystąpiła Akcja rekordu i 5 minut lub dłużej minęło już od ostatniego raportu wystąpił komunikat informacyjny, który jest wymieniony w sekcji "Podsumowanie" jest zapisywane w dzienniku błędów programu SQL Server.

Próg 15 sekund nie jest regulowany. Jednak można wyłączyć wykrywania we/wy niezakończone lub zablokowane za pomocą flagi śledzenia 830, mimo że nie zaleca się to zrobić.

Aby wyłączyć wykrywanie, podczas uruchamiania programu SQL Server, należy użyć -T830 parametr uruchamiania, aby wyłączyć wykrywanie w każdym uruchomieniu tego programu SQL Server. Aby wyłączyć wykrywanie dla wystąpienia programu SQL Server, które jest aktualnie uruchomione, należy użyć następującej instrukcji:

DBCC traceoff (830, -1)Ustawienie to jest stosowane tylko dla życia procesu programu SQL Server.

Uwaga Żądanie We/Wy, który staje się zawiesić lub zatrzymany wykazuje się tylko jeden raz. Na przykład jeśli wiadomości informuje, że 10 żądań We/Wy są wstrzymane, sprawozdania te 10 nie nastąpi ponownie. Jeśli następnej wiadomości zgłasza, że 15 żądań We/Wy są wstrzymane, oznacza to, że stają się zawiesić 15 nowych żądań We/Wy.

Śledzenie pakietu żądania We/Wy (IRP)

Program SQL Server używa standardowych wywołań interfejsu API systemu Windows firmy Microsoft do odczytywania i zapisywania danych. Na przykład program SQL Server używa następujących funkcji:

  • WriteFile

  • ReadFile

  • WriteFileScatter

  • ReadFileGather

Żądanie odczytu lub zapisu jest obsługiwane przez system Windows jako pakiet żądania We/Wy (IRP). Aby określić stan pakietów IRP, należy użyć obu z następujących czynności:

  • Pomoc Microsoft Platform Support

  • Debuger jądra

Aby uzyskać więcej informacji na temat MPP i MPP śledzenia, przejdź do następujące witryny firmy Microsoft i wyszukaj słowo kluczowe "MPP":

http://support.microsoft.comUwaga Debugowanie jądra może być procesem inwazyjne, ponieważ debugowanie jądra, mogą wymagać aby zatrzymać system w celu ukończenia czynności debugowania. Firma Microsoft zaleca Sprawdź dostępne aktualizacje dla następujących elementów:

  • System BIOS

  • Oprogramowanie układowe

  • Inne składniki ścieżek we/wy

Skontaktuj się z dostawcami sprzętu, aby wykonać dodatkowe czynności debugowania. Sesja debugowania będzie prawdopodobnie obejmowała sterownika innej firmy, oprogramowanie układowe lub składnik sterownika filtru.

Wydajność systemu i kwerend planu akcji

Ogólna wydajność systemu można grać kluczową rolę w operacji We/Wy. Ogólny stan zdrowia systemu należy wziąć pod uwagę, badając raporty niezakończone lub zablokowane operacji We/Wy. Nadmierne obciążenia może spowodować ogólny system za powolne. Obejmuje to przetwarzania We/Wy. Zachowanie systemu w czasie, który występuje problem może być kluczowym czynnikiem przy określaniu głównej przyczyny problemu. Na przykład jeśli użycie procesora CPU staje się wysoki lub użycie Procesora pozostaje wysoki, gdy wystąpi problem, to zachowanie może wskazywać, że proces w systemie przy użyciu Procesora tak dużo, że inne procesy mające negatywny wpływ.

Liczniki wydajności

Aby monitorować wydajność We/Wy, sprawdź następujące liczniki wydajności dla określonych informacji o ścieżce we/wy:

  • Średnia dysku w s/Transfer

  • Średnia długość kolejki dysku

  • Bieżąca długość kolejki dysku

Na przykład godzina średnia dysku w s/Transfer na komputerze, na którym działa program SQL Server jest zazwyczaj mniej niż 15 milisekund. Jeśli wartość średnia dysku w s/Transfer wysokości, oznacza to, że podsystem wejścia/wyjścia jest nie optymalnie prowadzeniem żądanie We/Wy.

Należy zachować ostrożność podczas korzystania z liczników wydajności, ponieważ SQL Server pełni wykorzystuje możliwości asynchroniczne We/Wy, poszerzające mocno długości kolejki dysku. W związku z tym dłużej długości kolejki dysku sam nie wskazują problemu.

W Monitorze systemu Windows, można przejrzeć liczniki "dysk fizyczny: Bajty dysku/s" dla każdego wpływa na dysku i porównać szybkość działania przeciw liczniki "proces: We/Wy danych bajtów/s" i "proces: IO bajty/s" dla każdego procesu określić, czy zbiór procesów generuje nadmiernego we/wy żądania. Istnieją różne inne We/Wy związanych z liczników dostępnych w procesie obiekt, który ujawnia informacje bardziej szczegółowe. Jeśli okaże się, że wystąpienie SQL Server jest odpowiedzialny za nadmierne obciążenie We/Wy na tym serwerze, przejrzyj następnej sekcji na "Indeksy i równoległości". Szczegółowe omówienie na wykrywanie i rozwiązywanie wąskich gardeł we/wy można sprawdzić w sekcji "Wąskich gardeł we/wy" w witrynie MSDN oficjalny dokument Rozwiązywanie problemów z wydajnością programu SQL Server 2008 lub Rozwiązywanie problemów z wydajnością w programie SQL Server 2005.

Indeksy i równoległości

Często rozerwania we/wy występują, ponieważ brakuje indeksu. To zachowanie może poważnie popchnąć ścieżkę We/Wy. Przebieg, który używa indeksu Włączanie Kreatora (ITW) może pomóc w rozwiązaniu ciśnienie we/wy w systemie. Jeśli kwerendy korzysta z indeksu zamiast skanowanie tabela lub być może jeżeli używa sortowania lub mieszania, system może uzyskać następujące korzyści:

  • Zmniejszenie jest wykonany w fizycznej we/wy, który jest wymagany do ukończenia akcji, który bezpośrednio tworzy korzyści w wydajności dla kwerendy.

  • Mniejsza liczba stron w pamięci podręcznej danych muszą zostać obrócony. W związku z tym strony znajdujące się w pamięci podręcznej danych pozostają istotne dla aktywnych kwerend.

  • Sortuje i mieszania są używane, ponieważ indeks może brakować lub są nieaktualne statystyki. Przez dodanie jednego lub kilku indeksów może zmniejszyć wykorzystanie tempdb i rywalizacji.

  • Zmniejszenie jest wykonany w zasobów i/lub operacji równoległych. Ponieważ program SQL Server nie gwarantuje wykonanie kwerendy równolegle, a obciążenie systemu jest uważany za, najlepiej zoptymalizować wszystkie kwerendy dla wykonanie szeregowe. Aby zoptymalizować kwerendy, otwórz Query Analyzer i ustaw wartość sp_configure opcji maksymalnego stopnia równoległości na 1. Jeśli wszystkie kwerendy są dostrojony do uruchomienia jak Operacja szeregowego, równoległego jest często lepsze wyniki. Jednak wiele razy równoległego wybrano, ponieważ jest duża ilość danych. Brak indeksu sortowania dużej ilości danych może być występować. Wielu pracowników, które wykonują operację sortowania spowoduje utworzenie krótszy czas reakcji. Jednak ta akcja może znacznie zwiększyć ciśnienie w systemie. Duże żądań odczytu od wielu pracowników może powodować We/Wy serii wraz z większego wykorzystania Procesora z wielu pracowników. Szybsze działanie i używał mniej zasobów, jeśli indeks jest dodawany lub inną akcję strojenia występuje wiele razy kwerendy można dostroić.

Praktyczne przykłady z pomocy technicznej programu Microsoft SQL Server

Poniższe przykłady zostały obsłużone przez wsparcie Microsoft SQL Server i platformy eskalacji. Przykłady te mają na celu zapewniają ramy odniesienia i zestaw pomocy Państwa oczekiwania około wstrzymana i zatrzymany sytuacji we/wy i o jak system może mieć wpływ lub mogą odpowiadać. Nie ma określonego sprzętu ani zestaw sterowników, które stwarzają wszelkie szczególne ryzyko lub zwiększone ryzyko nad drugim. Wszystkie systemy są takie same, w tym względzie.

Przykład 1: Zapisu dziennika, który jest zablokowany przez 45 sekund

Próba zapisania pliku dziennika SQL Server okresowo staje zatrzymany przez około 45 sekund. Zapisu dziennika nie zostanie zakończone w odpowiednim czasie. To zachowanie tworzy blokowania warunek, który powoduje błędy przekroczenia limitu czasu klienta 30 sekund.

Wniosek złożony commit do programu SQL Server i zatwierdzanie został zatrzymany w trybie zapisu dziennika do czasu. To zachowanie powoduje, że nadal podtrzymuje założone blokady i zablokować przychodzące żądania od innych klientów. Inni klienci zacząć się limit czasu. Związków problem, ponieważ aplikacja nie wycofa otwarte transakcje po wystąpieniu limitu czasu kwerendy. Spowoduje to utworzenie setki otwartych transakcji, które są blokują. W związku z tym trudnej sytuacji blokowania występuje.

Aby uzyskać więcej informacji na temat transakcji obsługi i blokowanie, zobacz następujący artykuł z bazy wiedzy Microsoft Knowledge Base:

224453 opis i rozwiązywanie problemów z blokowaniem programu SQL ServerAplikacja usługi witryny sieci Web przy użyciu puli połączeń. Więcej połączeń zostać zablokowane, witryny sieci Web tworzy więcej połączeń. Zablokowane połączenia te i cykl jest powtarzany.

Po upływie 45 sekund kończy się zapisu dziennika. Jednakże do tego czasu setek połączeń są kopie zapasowe. Problemów z blokowaniem spowodować, że kilka minut czasu odzyskiwania dla programu SQL Server i aplikacji. W połączeniu z problemy z aplikacjami, niezakończone stan we/wy ma to bardzo negatywny wpływ na system.

Rozwiązanie

Ten problem był śledzony do zablokowane żądania We/Wy sterownika karty magistrali hosta (HBA). Komputer miał wiele kart HBA z obsługą przełączania awaryjnego. Gdy jeden HBA był za lub nie był komunikuje się z sieci SAN (Storage Area), wartość limitu czasu "ponownych prób przed przejęciem awaryjnym" został skonfigurowany do 45 sekund. Jeśli limit czasu został przekroczony, żądania We/Wy został rozesłany do drugiej karty HBA. Druga karta HBA obsłużone żądanie i szybko zakończone. Aby zapobiec takich warunków miejsca parkingowego, producent sprzętu zalecane ustawienie "ponownych prób przed przejęciem awaryjnym" 5 sekund.

Przykład 2: Filtr sterownika interwencji

Wiele programów antywirusowych i produktów kopii zapasowej należy używać sterowników filtrów we/wy. Te sterowniki filtru we/wy stają się częścią stosu żądań We/Wy, i mają dostęp do żądania IRP. Pomoc techniczna firmy Microsoft znalazła różne problemy z błędów, które tworzą zatrzymany we/wy warunków lub zawiesić warunków we/wy w implementacji sterownika filtru.

Jednym z takich warunków był sterownik filtru dla kopii zapasowej przetwarzania, które kopię zapasową plików, które były otwarte podczas wykonywania kopii zapasowej wystąpienia dozwolone. Administrator systemu uwzględniła katalogu plików danych programu SQL Server w wybory ustawień kopii zapasowej pliku. Podczas wykonywania kopii zapasowej wystąpienia, kopia zapasowa będzie próbował zebrać zainstalowanego obrazu pliku w czasie wykonywania kopii zapasowej rozpoczęte. W ten sposób opóźnione żądań We/Wy. Żądania We/Wy były dopuszczone do zakończenia jednorazowo tylko jedno, jak zostały one obsługiwane przez oprogramowanie.

Rozpoczęcie wykonywania kopii zapasowej, wydajności serwera SQL drastycznie spadły ponieważ operacji We/Wy programu SQL Server zostało zmuszonych do zakończenia jednej naraz. Powodować problemy, logika "pojedynczo" był taki, że operacja We/Wy nie może być wykonywane asynchronicznie. W związku z tym gdy program SQL Server oczekuje księgować żądanie We/Wy i kontynuować, pracownik został zatrzymany w odczytu lub zapisu rozmowy, do momentu zakończenia żądania We/Wy. Przetwarzanie zadań, takich jak SQL Server odczytu z wyprzedzeniem zostały skutecznie wyłączone przez działania sterownika filtru. Ponadto inny błąd w sterowniku filtru w lewo akcje "pojedynczo" w procesie, nawet wtedy, gdy kopia zapasowa została ukończona. Jedynym sposobem przywrócenia wydajności programu SQL Server było zamknąć i ponownie otworzyć bazy danych lub ponownie uruchomić SQL Server tak, że dojście do pliku został wydany i reacquired bez interakcji sterownika filtru.

Rozwiązanie

Aby rozwiązać ten problem, pliki danych programu SQL Server zostały usunięte z proces wykonywania kopii zapasowej plików. Producentem oprogramowania również rozwiązany problem, który opuścił pliku w trybie "pojedynczo".

Przykład 3: Ukryte błędy

Wiele systemów wyższej klasy mają wielokanałowy ścieżek we/wy do obsługi równoważenia obciążenia lub podobnych form działalności. Pomoc techniczna firmy Microsoft wykrył problemy z oprogramowaniem, gdzie żądanie We/Wy nie powiedzie się, ale oprogramowanie nie obsługuje poprawnie warunek błędu równoważącym obciążenie. Oprogramowanie można spróbować nieskończoną liczbę ponownych prób. Operacja We/Wy staje się zatrzymany i SQL Server nie może zakończyć określonej akcji. Podobnie jak dziennik wpisz warunek opisany wcześniej, wiele zachowań systemu niskiej może wystąpić po takim stanie kliny systemu.

Rozwiązanie

Aby rozwiązać ten problem, ponowne uruchomienie programu SQL Server jest często wymagane. Jednak czasami należy ponownie uruchomić system operacyjny, aby przywrócić przetwarzania. Zalecane jest również uzyskać aktualizację oprogramowania od dostawcy we/wy.

Przykład 4: Magazyn zdalny, dublowanie i dysków w macierzy raid

Wiele systemów korzystania z dublowania lub wykonać podobne kroki, aby zapobiec utracie danych. Niektóre systemy, które używają dublowanie jest oparty na oprogramowaniu, a niektóre są oparte na sprzęcie. Sytuacja, która jest zazwyczaj odkryte przez Support firmy Microsoft dla tych systemów jest zwiększenie opóźnienia.

Wzrost całkowity czas we/wy występuje, gdy we/wy musi zakończyć się do woluminu dublowanego, przed we/wy jest uznana za kompletną. W przypadku instalacji zdalnego dublowania być zaangażowani sieci ponownych prób. Gdy wystąpią błędy dysku i raid system przebudowuje, wzór we/wy również może zostać przerwane.

Rozwiązanie

Ustawienia konfiguracji ścisłe są wymagane w celu skrócenia opóźnienia lusterka lub raid odbudować operacji.


Aby uzyskać więcej informacji przejrzyj wymagania dotyczące programu SQL Server do obsługi zdalnego dublowanie baz danych użytkowników.

Przykład 5: kompresja

Microsoft nie obsługuje programu Microsoft SQL Server 7.0 lub programu Microsoft SQL Server 2000 pliki danych i pliki dziennika na dyskach skompresowanych. Kompresja NTFS nie jest bezpieczny dla programu SQL Server, ponieważ Kompresja NTFS podziały zapisu Ahead Logging Protokół WAL. Kompresja NTFS wymaga również wydłużony czas przetwarzania dla każdej operacji We/Wy. Kompresja tworzy "pojedynczo" jak zachowanie, które powoduje problemy z wydajnością poważne występuje.

Rozwiązanie

Aby rozwiązać ten problem, należy zdekompresować danych i plików dziennika.

Aby uzyskać więcej informacji przejrzyj Opis obsługi baz danych SQL Server na woluminy skompresowane.

Punkty dodatkowe dane

PAGEIOLATCH_ * i writelog czeka w sys.dm_os_wait_stats dynamiczne widoki zarządzania (DMV) są kluczowe indictors do zbadania wydajności ścieżkę We/Wy. Jeśli widzisz znaczące czeka PAGEIOLATCH, oznacza to, że program SQL Server czeka na podsystem We/Wy. Pewną ilość PAGEIOLATCH oczekiwania jest typowy i zachowanie jest oczekiwane. Jednakże jeśli średni czas oczekiwania na PAGEIOLATCH są zawsze większa niż 10 milisekund (ms), należy zbadać Dlaczego podsystem We/Wy jest pod ciśnieniem. Aby uzyskać więcej informacji zobacz następujące dokumenty:



Powiązane artykuły

SQL Server wymaga, że systemy obsługują "gwarantowaną dostawę stabilne nośniki" określone zgodnie Z wymaganiami programu SQL Server we/wy niezawodności. Aby uzyskać więcej informacji na temat wymagań wejściowych i wyjściowych dla aparatu bazy danych programu SQL Server przejdź do następujący artykuł bazy wiedzy Microsoft Knowledge Base:

967576 wymagania wejścia/wyjścia aparatu bazy danych Microsoft SQL Server

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jak zadowalająca jest jakość tłumaczenia?

Co wpłynęło na Twoje wrażenia?

Czy chcesz przekazać jakieś inne uwagi? (Opcjonalnie)

Dziękujemy za opinię!

×