najti_prichiny_blokirovok_sql

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
najti_prichiny_blokirovok_sql [2026/04/17 08:15]
tro
najti_prichiny_blokirovok_sql [2026/04/22 06:57] (текущий)
tro
Строка 2: Строка 2:
  
 ===== Перевірка на блокування ===== ===== Перевірка на блокування =====
 +==== Розширена аналітика поточних блокувань + статистичні данні ====
 +<code>
 +SELECT
 +    s.session_id,
 +    s.program_name,
 +    s.host_name,
 +    DB_NAME(s.database_id)                          AS база,
 +    r.command,
 +    r.status,
 +    r.wait_type,
 +    r.wait_time/1000                                AS очікування_сек,
 +
 +    -- ЧАС
 +    r.total_elapsed_time/1000                       AS виконується_сек,
 +    r.total_elapsed_time/1000/60                    AS виконується_хв,
 +
 +    -- CPU
 +    r.cpu_time                                      AS cpu_мс,
 +    CAST(r.cpu_time * 100.0 
 +        / NULLIF(r.total_elapsed_time,0) AS DECIMAL(5,1)) AS cpu_відсоток,
 +
 +    -- IO
 +    r.logical_reads                                 AS логічних_читань,
 +    r.reads                                         AS фізичних_читань,
 +    r.writes                                        AS записів,
 +    -- скільки МБ прочитано з диску
 +    r.reads * 8 / 1024                              AS прочитано_МБ,
 +
 +    -- БЛОКУВАННЯ
 +    r.blocking_session_id                           AS блокує_сесія,
 +    r.open_transaction_count                        AS відкритих_транзакцій,
 +
 +    -- ПРОГРЕС (для BACKUP, DBCC, ALTER INDEX)
 +    r.percent_complete                              AS прогрес_відсоток,
 +    r.estimated_completion_time/1000/60             AS залишилось_хв,
 +
 +    -- ПАМ'ЯТЬ
 +    mg.granted_memory_kb/1024                       AS виділено_памяті_МБ,
 +    mg.used_memory_kb/1024                          AS використано_памяті_МБ,
 +    mg.requested_memory_kb/1024                     AS запитано_памяті_МБ,
 +
 +    -- ПЛАН ВИКОНАННЯ (посилання)
 +    r.plan_handle,
 +
 +    -- ТЕКСТ ЗАПИТУ
 +    SUBSTRING(t.text, 
 +        (r.statement_start_offset/2)+1,
 +        ((CASE r.statement_end_offset
 +            WHEN -1 THEN DATALENGTH(t.text)
 +            ELSE r.statement_end_offset
 +          END - r.statement_start_offset)/2)+1
 +    )                                               AS поточний_оператор,
 +    t.text                                          AS повний_запит
 +
 +FROM sys.dm_exec_sessions s
 +JOIN sys.dm_exec_requests r 
 +    ON s.session_id = r.session_id
 +OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t
 +LEFT JOIN sys.dm_exec_query_memory_grants mg 
 +    ON r.session_id = mg.session_id
 +WHERE s.is_user_process = 1
 +ORDER BY r.cpu_time DESC, r.logical_reads DESC
 +</code>
 +
 ==== Показує всі сесії що зараз заблоковані кимось іншим ==== ==== Показує всі сесії що зараз заблоковані кимось іншим ====
 <code> <code>
  • /sites/data/attic/najti_prichiny_blokirovok_sql.1776413758.txt.gz
  • Последнее изменение: 2026/04/17 08:15
  • tro