Автоматическое измерение всех SQL-запросов

В статье Maybe Normalizing Isn't Normal Джефф Этвуд говорит: "Вы'автоматически измеряете все запросы, которые проходят через ваше программное обеспечение, верно?" Я'нет, но я'хотел бы.

Некоторые особенности приложения, о котором идет речь:

Решение

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

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

Комментарии (0)

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

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

Комментарии (0)

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

Комментарии (0)

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

Комментарии (0)

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

Я нахожу это очень полезным потому что, если Вы действительно видите один that' s требующий времени, it' s один шаг только к копии и пасте это непосредственно screen/logfile и помещенный ' explain' перед ним в mysql.

Вы don' t должны пойти рыть через Ваш кодекс и восстановить what' s случай.

Само собой разумеется, этот doesn' t происходят в производстве как it' d управляют Вами из дискового пространства приблизительно через час.

Комментарии (0)

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

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

Комментарии (0)