Plan wykonania zapytania domyślnie nie pokazuje szczegółów blokowania, czy możliwe jest przeglądanie blokad wraz z typem uzyskanym podczas wykonywania zapytania?
źródło
Plan wykonania zapytania domyślnie nie pokazuje szczegółów blokowania, czy możliwe jest przeglądanie blokad wraz z typem uzyskanym podczas wykonywania zapytania?
czy możliwe jest przeglądanie blokad wraz z typem uzyskanym podczas wykonywania zapytania?
Tak, do ustalania zamków,
Możesz używać beta_lockinfoprzez Erland Sommarskog
beta_lockinfo
to procedura składowana, która dostarcza informacji o procesach i blokadach, które posiadają, oraz aktywnych transakcjach.beta_lockinfo
ma na celu zebranie jak największej ilości informacji o sytuacji blokowania, abyś mógł natychmiast znaleźć winowajcę i zabić proces blokowania, jeśli sytuacja jest desperacka. Następnie możesz usiąść i przeanalizować dane wyjściowe z,beta_lockinfo
aby zrozumieć, jak powstała sytuacja blokowania i dowiedzieć się, jakie działania należy podjąć, aby zapobiec ponownemu wystąpieniu sytuacji. Wyjście zbeta_lockinfo
pokazuje wszystkie aktywne procesy, a także procesy pasywne z blokadami, które obiekty blokują, jakie polecenia ostatnio przesłały i jakie instrukcje wykonują. Otrzymasz również plany zapytań dla bieżących instrukcji. Zwykle biegnieszbeta_lockinfo
aby spojrzeć bezpośrednio na dane wyjściowe, ale istnieje również tryb archiwizacji, w którym dane są zapisywane w tabeli. Nie jest to najmniej przydatne, jeśli chcesz, aby ktoś wysłał Ci dane wyjściowe zbeta_lockinfo
witryny, do której nie masz dostępu.
Inną metodą jest użycie sp_whoIsActiveprzez Adama machanic z@get_locks = 1
EXEC sp_WhoIsActive
@filter = '',
@filter_type = 'session',
@not_filter = '',
@not_filter_type = 'session',
@show_own_spid = 0,
@show_system_spids = 0,
@show_sleeping_spids = 1,
@get_full_inner_text = 0,
@get_plans = 1,
@get_outer_command = 1,
@get_transaction_info = 0,
@get_task_info = 1,
@get_locks = 1, ----------> 1 = ON (get lock info); 0 = OFF
@get_avg_time = 0,
@get_additional_info = 0,
@find_block_leaders = 0,
@delta_interval = 0,
@output_column_list = '[dd%][session_id][sql_text][sql_command][login_name][wait_info][tasks][tran_log%][cpu%][temp%][block%][reads%][writes%][context%][physical%][query_plan][locks][%]',
@sort_order = '[start_time] ASC',
@format_output = 1,
@destination_table = '',
@return_schema = 0,
@schema = NULL,
@help = 0
Oto jak patrzę na zamki według typu procesu / tabeli / zamka:
źródło
Możesz wyświetlić historię uzyskanych blokad w zakładce „Wiadomości” po uruchomieniu tego: DBCC TRACEON (1200, 3604, -1) Ale UWAGA, włącza te flagi śledzenia GLOBALNIE, więc nie zapomnij wyłączyć ich, gdy tylko tego nie zrobisz potrzebuję ich.
źródło
Możesz wyświetlić blokady dla sesji za pomocą sp_lock lub sys.dm_tran_locks. W obu przypadkach możesz filtrować według sesji. W tym celu można również użyć zdarzeń rozszerzonych.
źródło
Tak, możesz wyświetlić blokady i ich typ podczas wykonywania zapytania za pośrednictwem
SP_whoisactive Adama mechanika Kliknij tutaj, aby wyświetlić
Ponadto, jeśli chcesz utworzyć raport blokowy, możesz to zrobić za pomocą śledzenia, jak wyjaśniono tutaj
źródło
performance counters
po prostu da ci szerokie zachowanie instancji. OP chce na poziomie zapytania.