Wykrywanie i kończące zakleszczenia
Zakleszczenie występuje, gdy dwa lub więcej zadań trwale blok drugiej przez każdego zadania posiadające blokada zasób, który chcesz zablokować inne zadania.Następujące prezenty wykresu widoku wysokiego poziom zakleszczenie Państwa, gdzie:
Zadanie T1 ma blokada zasobu R1 (wskazywany przez strzałkę R1 T1) i zażądała blokada na zasób R2 (wskazywany przez strzałkę T1 R2).
Zadania T2 zablokował zasób R2 (wskazywany przez strzałkę R2 T2) i zażądał blokada zasobu R1 (wskazywany przez strzałkę T2 R1).
Ponieważ ani zadań może być kontynuowany do momentu zasób jest dostępny i może być zwolnione ani zasobów, dopóki zadanie nadal istnieje stanu zakleszczenie.
Aparat baz danych programu SQL Server Automatycznie wykrywa cyklów zakleszczenie w SQL Server. Aparat baz danych Wybiera jednej sesji jako ofiara zakleszczenie i bieżąca transakcja jest zakończone z powodu błędu podziału zakleszczenie.
Zasoby można zakleszczenie
Każda sesja użytkownika może być jeden lub więcej zadań, uruchomionych w jego imieniu, gdzie każde zadanie może nabycia lub poczekać na uzyskanie różnych zasobów.Następujące typy zasobów może spowodować blokowania może doprowadzić do zakleszczenie.
Blokuje.Oczekująca blokad dla zasobów, takich jak obiekty, stron, wiersze, metadane i aplikacji może być przyczyną zakleszczenie.Na przykład, transakcja T1 ma udostępnionych (S) blokada na wiersz r1 i oczekuje na uzyskanie wyłączności (X) blokada na r2.T2 transakcji zostało udostępnione (S) blokada na r2 i oczekuje na uzyskanie wyłączności (X) blokada na wiersz r1.To wyniki w cyklu blokada, w którym T1 i T2 oczekiwania dla siebie zwolnić zasoby zablokowane.
Wątków roboczych.Zadania w kolejce oczekiwania wątek roboczego dostępne mogą być przyczyną zakleszczenie.W kolejce zadań jest właścicielem zasobów, które blokują wszystkich wątków roboczych, wynikiem będzie zakleszczenie.Na przykład sesja S1 rozpocznie transakcję i uzyskuje współużytkowanego (S) blokada na r1 wiersz, a następnie przechodzi w tryb uśpienia.Aktywne sesje uruchomione na wszystkich wątków roboczych dostępnych próbujesz nabyć wyłączną (blokad dla wiersza r1 X).Ponieważ sesja S1 nie można pozyskać wątek roboczego, go nie można przekazać zatwierdzanie i uwalniania blokada na wiersz r1.To wyniki do zakleszczenie.
Pamięć.Gdy równoczesne żądania oczekują na dotacje pamięci, które nie mogą być spełnione z dostępnej pamięci, może wystąpić zakleszczenie.Na przykład, dwa kwerend współbieżnych, Q1 i Q2, wykonać jako funkcje zdefiniowane przez użytkownika, które nabywa odpowiednio 10 MB i 20 MB pamięci.Jeśli każda kwerenda musi 30 MB całkowita dostępna pamięć jest 20 MB, a Q1 i Q2 oczekiwania dla siebie zwolnić pamięć, a wyniki do zakleszczenie.
Równoległe zasobów związanych z wykonanie kwerendy może koordynatora, producenta lub konsumenta wątków skojarzone z portu wymiany blok sobie przyczyną zakleszczenie, zwykle po tym co najmniej jeden proces, który nie jest częścią kwerendy równolegle.Również równolegle kwerendy rozpoczęcia wykonania, SQL Server Określa stopień równoległości prostych, lub liczbę wątków roboczych, na podstawie bieżącego obciążenia.Jeśli nieoczekiwane zmiany obciążenia systemu, na przykład, gdy nowe kwerendy uruchomione na serwerze lub systemie zabraknie wątków roboczych może nastąpić zakleszczenie.
Wiele zestawów wyników Active (MARS) zasobów.Zasoby te są używane do kontrolowania, z przeplotem wiele żądań aktywnym obszarze MARS (zobacz Środowisko wykonawcze partii i MARS).
Zasób użytkownika.Gdy wątek oczekuje na zasób, który potencjalnie jest kontrolowane przez aplikację użytkownika, zasób jest traktowana jako zasób zewnętrzny lub użytkownika i jest traktowany jak blokada.
wykluczanie wzajemne sesji.Interleaved zadań uruchomionych w jednej sesja, co oznacza to tylko jedno zadanie można uruchomić w sesja na danym czas.Zadanie można uruchomić, musi to mieć wyłączny dostęp do obiektu wykluczanie wzajemne sesja.
wykluczanie wzajemne transakcji.Interleaved wszystkich zadań uruchomionych w jednej transakcji, co oznacza to tylko jedno zadanie można uruchomić w transakcji w danym czas.Zadanie można uruchomić, musi to mieć wyłączny dostęp do obiektu wykluczanie wzajemne transakcji.
Aby zadania uruchamiane MARS muszą go nabyć wykluczanie wzajemne sesja.Jeśli zadanie jest uruchomione w ramach transakcji, następnie muszą nabyć wykluczanie wzajemne transakcji.Gwarantuje to tylko jednego zadania jest aktywny w jednym czas w danej sesja i danej transakcji.Gdy nabyły muteksy wymagane zadania można wykonać.Po zakończeniu zadania lub plonów w środku wniosek, go najpierw wyda wykluczanie wzajemne transakcji następuje wykluczanie wzajemne sesja w odwrotnej kolejności przejęcia.Jednakże zakleszczenia może wystąpić z tych zasobów.W poniższym kodzie przykład dwa zadania żądanie użytkownika U1 i żądanie użytkownika U2, działają w tej samej sesja.
U1: Rs1=Command1.Execute("insert sometable EXEC usp_someproc"); U2: Rs2=Command2.Execute("select colA from sometable");
Wykonywanie procedura składowana z żądania użytkownika U1 uzyskał wykluczanie wzajemne sesja.Jeżeli procedura składowana pobiera long czas do wykonania, zakłada się przez Aparat baz danych , procedura przechowywana jest oczekiwanie na danych wejściowych od użytkownika.Żądanie użytkownika U2 czeka wykluczanie wzajemne sesja podczas, gdy użytkownik oczekuje na zestaw wyników z U2, i U1 oczekuje na zasób użytkownika.Jest to zilustrowane logicznie jako stanu zakleszczenie:
Wykrywanie zakleszczenia
Wszystkie zasoby wymienione w powyższej sekcji uczestniczyć w Aparat baz danych schemat wykrywania zakleszczenie.Wykrywanie zakleszczenia jest wykonywana przez wątek monitor blokada okresowo inicjuje wyszukiwanie przez wszystkie zadania w wystąpienie z Aparat baz danych.Następujących punktach opisano proces wyszukiwania:
Domyślny interwał wynosi 5 sekund.
Jeśli blokada wątek monitorowania znajdzie zakleszczenie, interwał wykrywania zakleszczenie będzie upuść z 5 sekund do zaledwie 100 milisekund w zależności od częstotliwości zakleszczenie.
Jeśli blokada wątek monitorowania zatrzymuje wyszukiwanie zakleszczenia, Aparat baz danych zwiększa odstępy między wyszukiwań do 5 sekund.
Jeśli martwychblokada właśnie został wykryty, zakłada się, że następny wątki musi czekać na blokada wprowadzania martwychblokada cyklu.Pierwsze kilka czeka Blokada po wykrył zakleszczenie będą natychmiast wyzwala wyszukiwanie zakleszczenia zamiast poczekać na następny interwał wykrywania zakleszczenia.Na przykład jeśli bieżącym interwałem jest 5 sekund, a tylko Wykryto zakleszczenie, dalej oczekiwania blokada będzie grzybków wyłącz wykrywanie zakleszczenia natychmiast.Jeśli ten oczekiwania blokada zakleszczenie, zostanie wykryty od razu, a nie podczas wyszukiwania następnej zakleszczenie.
Aparat baz danych Wykonuje zwykle tylko wykrywanie zakleszczenie okresowe.Ponieważ liczba zakleszczenie, napotkała w systemie jest zazwyczaj mała, wykrywanie zakleszczenie okresowe pomaga zmniejszyć narzuty wykrywanie zakleszczenie w systemie.
Gdy blokada monitor inicjuje zakleszczenie wyszukiwanie określonego wątku, identyfikuje zasób wątek oczekuje.blokada monitor następnie wyszukuje armatora(-ów) dla danego zasób i rekursywnie kontynuuje wyszukiwanie zakleszczenie tych wątków, aż do znalezienia cyklu.Cykl identyfikowane w ten sposób stanowi zakleszczenie.
Po wykryciu zakleszczenie Aparat baz danych kończy zakleszczenia, wybierając jeden z wątków jako ofiara zakleszczenia. Aparat baz danych Kończy bieżące partia wykonywane dla wątek, wycofuje transakcję ofiara zakleszczenie i zwraca błąd 1205 do aplikacji.Wycofywanie transakcji dla ofiara zakleszczenie zwalnia wszystkie blokady przechowywane przez transakcję.Umożliwia to transakcje inne wątki odblokowany i Kontynuuj.Błąd ofiara zakleszczenie 1205 rejestruje informacje o wątków i zasobach do zakleszczenie dziennik błędów.
Domyślnie Aparat baz danych wybiera jako ofiara zakleszczenie sesja uruchomioną transakcji jest najmniej kosztowny do wycofać.Alternatywnie, użytkownik może określić priorytet sesji w sytuacji impasu przy użyciu zestawu DEADLOCK_PRIORITY instrukcja.DEADLOCK_PRIORITY zestaw niski, normalny lub wysoki, lub też zestaw na dowolną liczbą całkowitą z zakres (-10 10).Zakleszczenie domyślnie priorytet normalny.Jeśli dwie sesje zakleszczenie różne priorytety, sesja o niższym priorytecie jest wybrany jako ofiara zakleszczenie.Jeśli zarówno sesje mają ten sam priorytet zakleszczenie, wybierany jest sesja z najtańszych wycofać transakcji.Jeśli ten sam priorytet zakleszczenie i koszt tej samej sesji zaangażowanych w cykl zakleszczenie, ofiarą jest wybierane losowo.
Pracując z CLR monitor zakleszczenie automatycznie wykrywa zakleszczenie zasobów synchronizacji (monitory, Czytnik/zapisywarka łączyć blokada i Wątek) dostępny wewnątrz procedury zarządzanych.Jednakże zakleszczenie jest rozwiązywany przez Zgłaszanie wyjątku w procedurze, który został wybrany jako ofiara zakleszczenie.Ważne jest, aby zrozumieć, że wyjątek nie automatycznie zwolnić zasoby aktualnie własnością ofiary; zasoby muszą być wyraźnie zwolnione.Spójne z zachowaniem wyjątek, wyjątek używany do identyfikowania ofiara zakleszczenie można złowionych i odrzucone.
Narzędzia informacje zakleszczenia
Aby wyświetlić informacje zakleszczenie, Aparat baz danych zawiera narzędzia do monitorowania w formularzu dwie flagi śledzenia, a zdarzenie zakleszczenie wykresu w SQL Server Profiler.
Flaga 1204 i flagi śledzenia 1222 śledzenia
Flaga 1222 informacje zwrotne przechwytywany w wystąpieniu zakleszczenia flagi śledzenia 1204 i śledzenia SQL Server 2005 dziennik błędów.Śledzenie Flaga raporty 1204 zakleszczenie informacje sformatowane przez każdy węzeł zaangażowanych w zakleszczenie.Śledzenia informacji zakleszczenie formaty 1222 flagi, najpierw przez procesy, a następnie przez zasoby.Jest możliwe włączyć zarówno flagi śledzenia uzyskanie dwóch reprezentacji tego samego zdarzenie zakleszczenie.
Oprócz definiowania właściwości flagi śledzenia 1204 i 1222, w poniższej tabela przedstawiono również podobieństw i różnic.
Właściwość |
Flaga 1204 i flagi śledzenia 1222 śledzenia |
Flagi śledzenia 1204 tylko |
Flagi śledzenia 1222 tylko |
---|---|---|---|
Format wyjściowy |
Dane wyjściowe są przechwytywane w SQL Server 2005 dziennik błędów. |
Koncentruje się na węzłach z zakleszczenie.Każdy węzeł dysponuje wydzieloną sekcję i końcowej części opisano ofiara zakleszczenie. |
Zwraca informacje w formacie XML podobne, nie jest zgodna ze schematem XML Schema Definition (XSD).Format ma trzy główne sekcje.Pierwsza sekcja deklaruje ofiara zakleszczenie.W drugiej sekcji opisano każdy proces zakleszczenie.Trzecia sekcja opisuje zasoby, które są tożsame z węzłów flagi śledzenia 1204. |
Identyfikowanie atrybutów |
SPID:<x> ECID:<x>. Identyfikuje proces systemu identyfikator wątek w przypadkach równoległych procesów.Wpis SPID:<x> ECID:0, gdzie <x> zastępuje wartość SPID, reprezentuje głównego wątek.Wpis SPID:<x> ECID:<y>, gdzie <x> zastępuje wartość SPID i <y> jest większa niż 0, reprezentuje sub-threads dla tego samego identyfikatora SPID. BatchID (sbid dla śledzenia Flaga 1222).Identyfikuje partia, z których kodu wykonanie żądania lub utrzymywanie blokada.Gdy wiele zestawów wyników Active (MARS) jest wyłączona, wartość BatchID jest równa 0.Po włączeniu MARS jest wartość active partii 1 n.Jeśli w sesja nie aktywne instancje, BatchID jest równa 0. Tryb.Określa typ blokada dla określonego zasób, na wniosek, przyznane lub obsługiwane przez wątek.Tryb może być IS (zamiarem udostępniony), S (udostępniany), U (aktualizacja), IX (zamiarem wyłącznie), SZEŚCIU (udostępnione z zamiarem wyłączności) i X (wyłączność).Aby uzyskać więcej informacji, zobacz Tryby Lock. Wiersz # (linii dla śledzenia Flaga 1222).Wyświetla numer wiersza w bieżącym partia sprawozdań, które było wykonywane, gdy wystąpił zakleszczenie. Dane wejściowe w buforze (inputbuf dla śledzenia Flaga 1222).Wyświetla listę wszystkich instrukcji w bieżącej partia. |
Węzeł.Reprezentuje numer wpisu w łańcuchu zakleszczenie. Wyświetla listę.Właściciel blokada może być częścią tych list:
Typ instrukcji.Opisuje typ instrukcja DML (SELECT, INSERT, UPDATE lub DELETE) na którym wątki uprawnień. Właścicielem zasobu ofiarą.Określa uczestniczących wątek, SQL Server wybiera jako ofiara przerwać cykl zakleszczenie.Wybrany wątek i wszystkie istniejące sub-threads zostają zakończone. Rozgałęzienie dalej.Reprezentuje sub-threads dwóch lub więcej sam identyfikator SPID są zaangażowane w cyklu zakleszczenie. |
ofiara zakleszczenie.Reprezentuje adres pamięci fizycznej zadania (zobacz sys.dm_os_tasks (języka Transact-SQL)), która została wybrana jako ofiara zakleszczenie.Może być 0 (zero) w przypadek zakleszczenie nierozwiązane.Zadanie, które jest wycofywanie nie wybrany jako ofiara zakleszczenie. executionstack.Reprezentuje Transact-SQL kod wykonywany w czas występuje zakleszczenie. priorytet.Reprezentuje priorytet zakleszczenie.W niektórych przypadkach Aparat baz danych opcjonalnych może zmienić priorytet zakleszczenie krótki czas trwania, aby osiągnąć lepszą współbieżność. logused.Dziennik zajmowane przez zadanie. Identyfikator właściciela.Identyfikator transakcji, która ma kontrolę nad żądania. Stan.Stan zadania.Jest to jedna z następujących wartości:
waitresource.zasób Wymagane przez zadanie. czas_oczekiwania.Czas w milisekundach oczekiwania dla zasób. schedulerid.Harmonogram skojarzone z tym zadaniem.See sys.dm_os_schedulers (języka Transact-SQL). hostname.Nazwa stacja robocza. IsolationLevel.Bieżący poziom izolacji transakcji. Xactid.Identyfikator transakcji, która ma kontrolę nad żądania. CurrentDB.Identyfikator bazy danych. lastbatchstarted.Ostatnio czas wsadowe uruchomiono procesu klient. lastbatchcompleted.Ostatnio czas Ukończono proces klient partia execution. clientoption1 i clientoption2.Ustawianie opcji dla tego połączenia klient.Jest to maskę bitową, która zawiera informacje na temat opcji, zazwyczaj sterowany instrukcje SET, takich jak instrukcję SET NOCOUNT i ustaw XACTABORT. associatedObjectId.Reprezentuje identyfikator HoBT (sterty lub drzewa b) |
Atrybutów zasobów |
RID.Identyfikuje pojedynczego wiersza w tabela, w którym blokada utrzymywane lub wymagane.RID jest reprezentowana jako RID: db_id:file_id:page_no:row_no.Na przykład RID: 6:1:20789:0. OBIEKT.Identyfikuje tabela, w której blokada utrzymywane lub wymagane.OBIEKT jest reprezentowany jako obiekt: db_id:object_id.Na przykład TAB: 6:2009058193. KEY.Identyfikuje klucz zakres w ramach indeksu, w którym blokada utrzymywane lub wymagane.KLUCZ jest reprezentowana jako klucz: db_id:hobt_id (index key hash value).For example, KEY: 6:72057594057457664 (350007a4d329). PAG.Identyfikuje zasób strona, na którym blokada utrzymywane lub wymagane.PAG jest reprezentowana jako PAG: db_id:file_id:page_no.For example, PAG: 6:1:20789. EXT.Identyfikuje strukturę fragment.Rozszerzenie jest reprezentowana jako EXT: db_id:file_id:extent_no.For example, EXT: 6:1:9. DB.Identyfikuje blokada bazy danych.DB jest reprezentowana w jednym z następujących sposobów:
APP.Identyfikuje blokada przez zasób aplikacji.Aplikacja jest reprezentowana jako aplikacja: lock_resource.For example, APP: Formf370f478. METADANE.Reprezentuje metadane zasobów zaangażowanych w zakleszczenie.Ponieważ METADANE ma wiele subresources, zwrócona wartość zależy od subresource, który został zakleszczony.For example, METADATA.USER_TYPE returns user_type_id = <integer_value>.Aby uzyskać więcej informacji o zasobach METADANYCH i subresources, zobacz sys.dm_tran_locks (języka Transact-SQL). HOBT.Reprezentuje sterty lub drzewa b zaangażowane do zakleszczenie. |
Brak wyłączne tej flagi śledzenia. |
Brak wyłączne tej flagi śledzenia. |
Przykład 1204 flagi śledzenia
Poniższy przykład przedstawia dane wyjściowe po włączeniu flagi śledzenia 1204.W tym przypadek sterty z indeksów nie jest tabelą w węźle 1 i tabela 2 węzła jest sterty z indeks nieklastrowany.Indeks klucz w węzeł 2 jest aktualizowany po wystąpieniu zakleszczenie.
Deadlock encountered .... Printing deadlock information
Wait-for graph
Node:1
RID: 6:1:20789:0 CleanCnt:3 Mode:X Flags: 0x2
Grant List 0:
Owner:0x0315D6A0 Mode: X
Flg:0x0 Ref:0 Life:02000000 SPID:55 ECID:0 XactLockInfo: 0x04D9E27C
SPID: 55 ECID: 0 Statement Type: UPDATE Line #: 6
Input Buf: Language Event:
BEGIN TRANSACTION
EXEC usp_p2
Requested By:
ResType:LockOwner Stype:'OR'Xdes:0x03A3DAD0
Mode: U SPID:54 BatchID:0 ECID:0 TaskProxy:(0x04976374) Value:0x315d200 Cost:(0/868)
Node:2
KEY: 6:72057594057457664 (350007a4d329) CleanCnt:2 Mode:X Flags: 0x0
Grant List 0:
Owner:0x0315D140 Mode: X
Flg:0x0 Ref:0 Life:02000000 SPID:54 ECID:0 XactLockInfo: 0x03A3DAF4
SPID: 54 ECID: 0 Statement Type: UPDATE Line #: 6
Input Buf: Language Event:
BEGIN TRANSACTION
EXEC usp_p1
Requested By:
ResType:LockOwner Stype:'OR'Xdes:0x04D9E258
Mode: U SPID:55 BatchID:0 ECID:0 TaskProxy:(0x0475E374) Value:0x315d4a0 Cost:(0/380)
Victim Resource Owner:
ResType:LockOwner Stype:'OR'Xdes:0x04D9E258
Mode: U SPID:55 BatchID:0 ECID:0 TaskProxy:(0x0475E374) Value:0x315d4a0 Cost:(0/380)
Przykład 1222 flagi śledzenia
Poniższy przykład przedstawia dane wyjściowe po włączeniu flagi śledzenia 1222.przypadek jednej tabela jest sterty z żadnych indeksów i drugiej tabela jest sterty z indeks nieklastrowany.W drugiej tabela indeks klucz jest aktualizowany po wystąpieniu zakleszczenie.
deadlock-list
deadlock victim=process689978
process-list
process id=process6891f8 taskpriority=0 logused=868
waitresource=RID: 6:1:20789:0 waittime=1359 ownerId=310444
transactionname=user_transaction
lasttranstarted=2005-09-05T11:22:42.733 XDES=0x3a3dad0
lockMode=U schedulerid=1 kpid=1952 status=suspended spid=54
sbid=0 ecid=0 priority=0 transcount=2
lastbatchstarted=2005-09-05T11:22:42.733
lastbatchcompleted=2005-09-05T11:22:42.733
clientapp=Microsoft SQL Server Management Studio - Query
hostname=TEST_SERVER hostpid=2216 loginname=DOMAIN\user
isolationlevel=read committed (2) xactid=310444 currentdb=6
lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200
executionStack
frame procname=AdventureWorks2008R2.dbo.usp_p1 line=6 stmtstart=202
sqlhandle=0x0300060013e6446b027cbb00c69600000100000000000000
UPDATE T2 SET COL1 = 3 WHERE COL1 = 1;
frame procname=adhoc line=3 stmtstart=44
sqlhandle=0x01000600856aa70f503b8104000000000000000000000000
EXEC usp_p1
inputbuf
BEGIN TRANSACTION
EXEC usp_p1
process id=process689978 taskpriority=0 logused=380
waitresource=KEY: 6:72057594057457664 (350007a4d329)
waittime=5015 ownerId=310462 transactionname=user_transaction
lasttranstarted=2005-09-05T11:22:44.077 XDES=0x4d9e258 lockMode=U
schedulerid=1 kpid=3024 status=suspended spid=55 sbid=0 ecid=0
priority=0 transcount=2 lastbatchstarted=2005-09-05T11:22:44.077
lastbatchcompleted=2005-09-05T11:22:44.077
clientapp=Microsoft SQL Server Management Studio - Query
hostname=TEST_SERVER hostpid=2216 loginname=DOMAIN\user
isolationlevel=read committed (2) xactid=310462 currentdb=6
lockTimeout=4294967295 clientoption1=671090784 clientoption2=390200
executionStack
frame procname=AdventureWorks2008R2.dbo.usp_p2 line=6 stmtstart=200
sqlhandle=0x030006004c0a396c027cbb00c69600000100000000000000
UPDATE T1 SET COL1 = 4 WHERE COL1 = 1;
frame procname=adhoc line=3 stmtstart=44
sqlhandle=0x01000600d688e709b85f8904000000000000000000000000
EXEC usp_p2
inputbuf
BEGIN TRANSACTION
EXEC usp_p2
resource-list
ridlock fileid=1 pageid=20789 dbid=6 objectname=AdventureWorks2008R2.dbo.T2
id=lock3136940 mode=X associatedObjectId=72057594057392128
owner-list
owner id=process689978 mode=X
waiter-list
waiter id=process6891f8 mode=U requestType=wait
keylock hobtid=72057594057457664 dbid=6 objectname=AdventureWorks2008R2.dbo.T1
indexname=nci_T1_COL1 id=lock3136fc0 mode=X
associatedObjectId=72057594057457664
owner-list
owner id=process6891f8 mode=X
waiter-list
waiter id=process689978 mode=U requestType=wait
Zdarzenie wykresu zakleszczenia Profiler
To zdarzenie w SQL Server Profiler , przedstawia graficznej reprezentacji zadań i zasobów zaangażowanych w zakleszczenie.W poniższym przykładzie przedstawiono dane wyjściowe z SQL Server Profiler , gdy wykres zakleszczenie zdarzenie jest włączona.
Więcej informacji o pracy SQL Server Profiler zakleszczenie wykresu, zobacz Analizowanie zakleszczenia z SQL Server Profiler.