|
![]() |
#1 |
Иван Захаров
|
Цитата:
Повторное использование курсоров пока не замечал. |
|
|
За это сообщение автора поблагодарили: mazzy (5), fed (5), trud (3), raz (5), sukhanchik (7), Lucky13 (5), gl00mie (3), madm (1). |
![]() |
#2 |
Moderator
|
Цитата:
![]() На самом деле я примитивно вытаскиваю текущие исполняющиеся запросы по сессиям пдообным запросом X++: select r.session_id,r.status, SUBSTRING(st.text, (r.statement_start_offset/2)+1, ((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE r.statement_end_offset END - r.statement_start_offset)/2) + 1) AS statement_text, r.blocking_session_id,r.wait_type,r.wait_resource,r.wait_time,DB_NAME(r.database_id),r.cpu_time,r.logical_reads,r.reads,r.writes,r.start_time,r.sql_handle,r.plan_handle from sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS st CROSS APPLY sys.dm_exec_query_plan(r.plan_handle)as qp where sql_handle is not null Проблема в том, что зачастую очень тяжелый запрос из sys.dm_exec_query_stats приводит к вполне невинному запросику в sys.dm_exec_cursors, который в Management Studio исполняется со свистом и с очень разумным планом исполнения. Я вижу возможных причины для этого:
А вообще, по моему не существует гарантированного и универсального способа замеппить Fetch в исходный текст запроса и посмотреть на план исполнения того самого исходного запроса... У меня была надежда что в SQL 2012 что-то сдвинулось на эту тему, но похоже что это не так... |
|
|
За это сообщение автора поблагодарили: mazzy (5), raz (5), Logger (3), ziva (2), madm (1). |
Теги |
cursor, long query, performance, sql server, sql server activity monitor, тяжелые запросы |
|
|