Автоматически измерять все запросы SQL

В статье «Возможно, нормализация не нормальна» Джефф Этвуд говорит: «Вы автоматически измеряете все запросы, которые проходят через ваше программное обеспечение, верно?» Я нет, но я бы хотел.

Некоторые особенности рассматриваемого приложения:

14.08.2008 02:57:18
6 ОТВЕТОВ
РЕШЕНИЕ

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

Единственная точка входа в базу данных является довольно стандартной функцией любого ORM или уровня базы данных - или, по крайней мере, это было в любом проекте, над которым я работал до сих пор!

6
14.08.2008 03:13:56

SQL Profiler - это инструмент, который я использую для мониторинга трафика, поступающего на мой SQL Server. Это позволяет собирать подробные данные о вашем сервере SQL. SQL Profiler распространяется с SQL Server по крайней мере начиная с SQL Server 2000 (но, вероятно, до этого также).

Настоятельно рекомендуется.

2
14.08.2008 03:00:29

Проект Dropthings в CodePlex имеет класс для временных блоков кода. Класс называется TimedLog. Он реализует IDisposable. Вы оборачиваете блок кода, который хотите использовать в операторе использования.

0
14.08.2008 03:54:38

Если вы используете rails, он автоматически регистрирует все запросы SQL и время, которое они затратили на выполнение, в файле журнала разработки.

Я нахожу это очень полезным, потому что если вы видите тот, который занимает некоторое время, это один шаг, просто скопируйте и вставьте его прямо с экрана / файла журнала и поместите «объяснение» перед ним в mysql.

Вам не нужно копаться в своем коде и реконструировать происходящее.

Излишне говорить, что это не произойдет на производстве, так как это займет у вас около дискового пространства примерно через час.

0
14.08.2008 05:00:51

Взгляните на эту главу, мы с Джеффом Этвудом написали об оптимизации производительности для веб-сайтов. Мы расскажем о многих вещах, но есть много о трассировке и оптимизации баз данных: ускорение работы вашего сайта: 8 советов по производительности ASP.NET

1
14.08.2008 07:23:00

Если вы определяете фабрику, которая создает для вас SqlCommands, и всегда вызываете ее, когда вам нужна новая команда, вы можете вернуть RealProxy в SqlCommand.

Этот прокси может затем измерить, сколько времени ExecuteReader / ExecuteScalar и т. Д. Использует StopWatch и записать его куда-нибудь. Преимущество использования такого метода над Sql Server Profiler заключается в том, что вы можете получать полные трассировки стека для каждого исполняемого фрагмента SQL.

0
17.02.2009 11:56:44