Строки обрабатываются статистической информации в SQL Server 2005 - PullRequest
1 голос
/ 08 ноября 2010

В Oracle есть представление V $ SQLAREA, которое отображает статистику по общей области SQL и содержит одну строку на строку SQL. Он предоставляет статистику по операторам SQL, которые находятся в памяти, проанализированы и готовы к выполнению.

Существует один столбец -ROWS_PROCESSED, который суммирует общее количество строк, обработанных от имени этого оператора SQL.

Я ищу дополнительную информацию в SQLSERVER 2005.

Я заглянул в некоторые из DMV (например, sys.dm_exec_query_stats), но я не нашел ничего связанного.

@@ ROWCOUNT для меня не будет полезен, так как я хочу получить инкрементную статистическую информацию, которая будет суммировать строки_обработанные из самых высоких запросов на потребление ресурсов процессора / ввода / вывода в базе данных.

Буду признателен за любую помощь в этом вопросе.

Заранее спасибо,

Рони.


Я видел, что когда я запрашиваю следующий запрос, я получаю План запроса в XML.

Внутри кода плана XML есть часть "EstimateRows", число которой соответствует количеству строк оценки запроса.

Я подумываю о возможности подстановки столбца query_plan для получения только вышеуказанной информации (если я не найду ее в некоторых системных представлениях / таблицах).

Где я могу найти фактическое количество строк запроса? Где это хранится?

SELECT 
       case when sql_handle IS NULL
           then ' '
           else ( substring(st.text,(statement_start_offset+2)/2,       
   (case when qs.statement_end_offset = -1         
   then len(convert(nvarchar(MAX),st.text))*2      
   else statement_end_offset    
   end - statement_start_offset) /2  ) )
        end as query_text , 
    query_plan,
 FROM sys.dm_exec_query_stats qs 
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)
cross apply sys.dm_exec_sql_text(sql_handle) st;

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

Насколько я знаю, прямого эквивалента нет, особенно для подсчета строк.Соответствующие dmvs отслеживают стоимость ввода-вывода, которая используется для отображения отсутствующих индексированных, самых дорогих запросов и т. Д.

. Это даст вам статистику по каждому оператору SQL для текущих сеансов.YMMV: я просто собрал его на основе сценариев, которые у меня лежат.

SELECT 
    *
FROM 
    sys.dm_exec_query_stats  QS
    CROSS APPLY 
    sys.dm_exec_sql_text(sql_handle) ST

Мои сценарии основаны на ссылках, которые я упоминал здесь

0 голосов
/ 08 ноября 2010

Вы можете использовать системную переменную @@ rowcount, чтобы узнать количество записей, затронутых последним оператором.

...