Мониторинг SQL Server 2012 Медленные запросы / Защиты, которые вызывают блокировку

dba.stackexchange https://dba.stackexchange.com/questions/110752

Вопрос

Я использую SQL Server 2012, и я хочу получить удержание запросов, которые занимают больше времени для выполнения вместе с запросами, которые вызывают блокировку на сервере.Когда я смотрю на сервер для запущенных запросов, чтобы определить любую блокировку, я не нахожу никакого запроса.

У меня установлены расширенные события и получаем только информацию высокого уровня из этого.Таблицы, которые получают тайм-ауты, но мне нужна информация, которая рассказывает больше о запросах, вызванных тайм-аутами.

Есть какие-либо предложения ???

Это было полезно?

Решение

Вы можете использовать DMV's sys. dm_exec_query_stats и sys.dm_exec_requests Для анализа ресурсов потребляющих запросов вместе со своей продолжительностью для чего долго:

Используйте запрос ниже, чтобы захватить то же самое:

-- Execute the query inside target database
 SELECT TOP 10
      qs.total_elapsed_time / qs.execution_count / 1000000.0 AS average_seconds,
      qs.total_elapsed_time / 1000000.0 AS total_seconds,
      qs.execution_count,
      SUBSTRING (qt.text,qs.statement_start_offset/2, 
      (CASE WHEN qs.statement_end_offset = -1 
      THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 
      ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS individual_query,
      o.name AS object_name,
      DB_NAME(qt.dbid) AS database_name
FROM 
      sys.dm_exec_query_stats qs
      CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as qt
      LEFT OUTER JOIN sys.objects o ON qt.objectid = o.object_id
WHERE 
      qt.dbid = DB_ID()
ORDER BY 
      average_seconds DESC;
.

Более того, будет предложить, если вы используете расширенные события, вы можете захватить то же самое. Для получения дополнительной информации о том, как настроить и использовать то же самое, пожалуйста, прочитайте эту книгу из Jonathan Использование SQL Server 2008 Расширенные события , которые должны выходить с здесь

Кроме того, когда запросы запускаются, и что все процессы проходят на фоне и проверить, действительно ли блокировка на самом деле наряду с любым конкретным ожиданием, предложит вам использовать SP_WHIOISACTIONATION из Как использовать SP_Whoisactive, чтобы найти медленные SQL Server Queceries

Кроме того, если вы предпочитаете использовать Profiler, вы можете отслеживать и устранять неполадки, как объяснено в Как определить медленные заправки с помощью SQL Profiler

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top