Я долгое время использовал MySQL и обнаружил, что общий журнал запросов и журнал медленных запросов очень полезны для выяснения того, что происходит на сервере, и для выявления узких мест.
Теперь мне нужно использовать SQL Server. Есть ли у SQL Server аналогичные средства ведения журнала? Если да, то как они называются?
SQL-сервер хранит статистическую информацию обо всех запросах в различных таблицах. Вы можете использовать следующий код, чтобы определить, какой запрос выполняется дольше всего (из sys.dm_exec_query_stats
стол).
Вам следует выполнить следующие команды DBCC:
Эта команда DBCC очищает кеш сервера и перезапускает регистрацию времени выполнения запроса:
DBCC FREEPROCCACHE
Запустите этот запрос, чтобы найти самый длинный выполняющийся запрос:
SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
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
GO
Вам также следует взглянуть на Технет статья в журнале Оптимизация производительности запросов SQL Server, в котором есть запрос для определения, какой запрос является самым дорогостоящим запросом ввода-вывода на чтение, а также руководство по просмотру планов выполнения и других оптимизаций.
Вы можете использовать SQL Profiler для мониторинга системы в реальном времени и выявления медленно выполняющихся операторов.
SQL также может предложить индексы, которые вы можете добавить или исключить: http://msdn.microsoft.com/en-us/library/ms187974.aspx
В SQL Management Studio вы также можете просматривать отчеты, связанные с длинными запросами: щелкните правой кнопкой мыши имя сервера> отчеты> стандартные отчеты> Производительность - популярные запросы по ...
Старые медленные запросы сохраняются в MSSQL. Это уже было решено здесь:
http://blog.brianhartsock.com/2008/12/16/quick-and-dirty-sql-server-slow-query-log/