План выполнения запроса не показывает детали блокировки по умолчанию, возможно ли просмотреть блокировки вместе с типом, полученным во время выполнения запроса?
источник
План выполнения запроса не показывает детали блокировки по умолчанию, возможно ли просмотреть блокировки вместе с типом, полученным во время выполнения запроса?
Можно ли просмотреть блокировки вместе с типом, полученным во время выполнения запроса?
Да, для определения замков,
Вы можете использовать beta_lockinfoErland Sommarskog
beta_lockinfo
это хранимая процедура, которая предоставляет информацию о процессах и блокировках, которые они удерживают, а также их активные транзакции.beta_lockinfo
предназначен для сбора как можно большего количества информации о ситуации блокировки, так что вы можете мгновенно найти виновника и убить процесс блокировки, если ситуация отчаянная. Затем вы можете откинуться на спинку кресла и проанализировать выходные данные,beta_lockinfo
чтобы понять, как возникла ситуация блокировки, и выяснить, какие действия следует предпринять, чтобы предотвратить повторение ситуации. Выходные данныеbeta_lockinfo
показывают все активные процессы, а также пассивные процессы с блокировками, какие объекты они блокируют, какую команду они отправили в последний раз и какую инструкцию они выполняют. Вы также получаете планы запросов для текущих операторов. Обычно вы бежитеbeta_lockinfo
смотреть на вывод напрямую, но есть также режим архивирования, в котором данные сохраняются в таблицу. Это не менее полезно, если вы хотите, чтобы кто-то отправил вам вывод сbeta_lockinfo
сайта, к которому у вас нет доступа.
Другой метод - использовать sp_whoIsActiveАдам Мачаник с@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
Вот как я смотрю на блокировки по типу процесса / таблицы / блокировки:
источник
Вы можете просмотреть полученную историю блокировок на вкладке «Сообщения» после запуска этого: DBCC TRACEON (1200, 3604, -1) Но ВНИМАНИЕ, это разрешает эти флаги трассировки ГЛОБАЛЬНО, поэтому не забудьте отключить их, как только вы не нужно их.
источник
Вы можете просмотреть блокировки для сеанса, используя sp_lock или sys.dm_tran_locks. В обоих случаях вы можете фильтровать по сеансу. Вы также можете использовать расширенные события, чтобы сделать это.
источник
Да, вы можете просмотреть блокировки и их тип во время выполнения запроса через
SP_whoisactive от Adam mechanics нажмите здесь, чтобы посмотреть
Более того, если вы хотите создать блочный отчет, вы можете сделать это с помощью трассировки, как описано здесь.
источник
performance counters
просто даст вам широкое поведение экземпляра. ОП хочет на уровне запроса.