Нещо като. Вижте тази заявка:
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
Това ще ви даде заявките в кеша на плана по реда на това колко CPU са използвали. Можете да изпълнявате това периодично, като в задача на SQL Agent, и да вмъквате резултатите в таблица, за да сте сигурни, че данните продължават да съществуват след рестартиране.
Когато прочетете резултатите, вероятно ще разберете защо не можем да свържем тези данни директно с отделна база данни. Първо, една заявка може също да скрие своята истинска база данни родител, като прави трикове като този:
USE msdb
DECLARE @StringToExecute VARCHAR(1000)
SET @StringToExecute = 'SELECT * FROM AdventureWorks.dbo.ErrorLog'
EXEC @StringToExecute
Заявката ще бъде изпълнена в MSDB, но ще търси резултати от AdventureWorks. Къде трябва да присвоим потреблението на процесора?
Става по-лошо, когато:
- Свързване между множество бази данни
- Изпълнете транзакция в множество бази данни и усилията за заключване обхващат множество бази данни
- Изпълнявайте задачи на SQL Agent в MSDB, които „работят“ в MSDB, но архивирайте отделни бази данни
Продължава и продължава. Ето защо има смисъл производителността да се настройва на ниво заявка, вместо на ниво база данни.
В SQL Server 2008R2 Microsoft представи функции за управление на производителността и управление на приложения, които ще ни позволят да опаковаме една база данни в разпределим и внедрим DAC пакет, и те обещават функции, които да улеснят управлението на производителността на отделни бази данни и техните приложения. Все още обаче не прави това, което търсите.
За повече от тях вижте T-SQL хранилище в wiki SQL Server на Toad World (по-рано в SQLServerPedia) .
Актуализирано на 29 януари, за да включва общи числа вместо само средни стойности.