Мониторинг SQL Server 2012 Медленные запросы / Защиты, которые вызывают блокировку
-
29-09-2020 - |
Вопрос
Я использую 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