Самый длинный запрос на базу данных - PullRequest
2 голосов
/ 10 августа 2009

Я использую это:

SELECT 
    *
FROM 
    sys.dm_exec_query_stats s
    CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
    s.max_elapsed_time DESC

для получения самых длительных запросов на уровне сервера.

Как получить самые длительные запросы на базу данных? Я хотел бы сосредоточиться только на одной базе данных одновременно.

Ответы [ 3 ]

7 голосов
/ 10 августа 2009

Запись BOL для sys.dm_exec_query_stats упоминает sys.dm_exec_query_plan

SELECT *
FROM
    sys.dm_exec_query_stats s
    CROSS APPLY
    sys.dm_exec_sql_text( s.sql_handle ) t
    CROSS APPLY
    sys.dm_exec_query_plan(s.plan_handle) foo
WHERE
    foo.dbid = DB_ID('My_DB')
ORDER BY
    s.max_elapsed_time DESC

Редактировать: я не пробовал. Я вообще беспокоюсь о нагрузке на сервер ...

0 голосов
/ 10 августа 2009

Похоже, вы пытаетесь настроить базы данных. Ваши самые длительные запросы могут быть не самыми дорогостоящими, или теми, которые вы извлечете наибольшую выгоду.

Вы должны прочитать о SQL Server Profiler, чтобы определить запросы, которые используют больше всего ресурсов, и работать над ними.

0 голосов
/ 10 августа 2009
SELECT * FROM database1.dbo.table JOIN database2.dbo.table

В какой базе данных выполнялся вышеуказанный запрос? Что, если текущим контекстом на момент выполнения был database3? Что если он был выполнен один раз в базе данных 4 и один раз в базе данных 5?

Идея состоит в том, что планы выполнения не привязаны к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...