Автоматически измерять все запросы SQL - PullRequest
5 голосов
/ 14 августа 2008

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

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

Ответы [ 6 ]

6 голосов
/ 14 августа 2008

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

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

2 голосов
/ 14 августа 2008

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

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

1 голос
/ 14 августа 2008

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

0 голосов
/ 17 февраля 2009

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

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

0 голосов
/ 14 августа 2008

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

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

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

Само собой разумеется, что это не произойдет в производственном процессе, так как это заставит вас освободить место на диске примерно за час.

0 голосов
/ 14 августа 2008

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

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