Сорт. Проверить этот запрос из:
SELECT total_worker_time/execution_count AS AvgCPU
, total_worker_time AS TotalCPU
, total_elapsed_time/execution_count AS AvgDuration
, total_elapsed_time AS TotalDuration
, (total_logical_reads+total_physical_reads)/execution_count AS AvgReads
, (total_logical_reads+total_physical_reads) AS TotalReads
, execution_count
, SUBSTRING(st.TEXT, (qs.statement_start_offset/2)+1
, ((CASE qs.statement_end_offset WHEN -1 THEN datalength(st.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS txt
, query_plan
FROM sys.dm_exec_query_stats AS qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) AS st
cross apply sys.dm_exec_query_plan (qs.plan_handle) AS qp
ORDER BY 1 DESC
Это поможет вам запросы в кэше плана в порядке, сколько процессора они использовали. Вы можете запускать это периодически, как в задании агента SQL, и вставлять результаты в таблицу, чтобы убедиться, что данные остаются за перезагрузкой.
Когда вы читаете результаты, вы, вероятно, поймете, почему мы не можем соотнести эти данные непосредственно с отдельной базой данных. Во-первых, один запрос может также скрыть свой истинный родительский базы данных, делая трюки, как это:
USE msdb
DECLARE @StringToExecute VARCHAR(1000)
SET @StringToExecute = 'SELECT * FROM AdventureWorks.dbo.ErrorLog'
EXEC @StringToExecute
Запрос будет выполнен в MSDB, но было бы результаты опроса из AdventureWorks. Где мы должны назначать потребление ЦП?
Это становится хуже, когда вы:
- Регистрация между несколькими базами данных
- запустить транзакций в нескольких базах данных, а также усилия запирающей охватывает несколько баз данных
- заданий Выполнить SQL агента в MSDB, что «работа» в MSDB, но резервное копирование отдельных баз данных
Это продолжается и продолжается. Поэтому имеет смысл настраивать производительность на уровне запросов, а не на уровне базы данных.
В SQL Server 2008R2 Microsoft представила функции управления производительностью и управления приложениями, которые позволят нам упаковать одну базу данных в распространяемом и развертываемом пакете DAC, и они являются многообещающими функциями, чтобы упростить управление производительностью отдельных баз данных и их применения. Тем не менее, он все еще не делает то, что вы ищете.
Для получения дополнительной информации посетите T-SQL repository at Toad World's SQL Server wiki (formerly at SQLServerPedia).
Обновлено на 1/29, чтобы включить общее число вместо средних.
Простите мое невежество, но каковы единицы AvgCPU и AvgDuration? – Portman 2009-01-28 23:56:22