Каков альтернативный способ для профилирования вашего веб-приложения без использования программы профилирования? - PullRequest
2 голосов
/ 14 августа 2011

У меня есть сайт, который использует php - mysql. Я хочу определить запросы к БД, которые занимают больше всего времени. Не обращая внимания на использование профилировщика, какие еще методы я могу использовать для выявления узких мест в QUERY.

Ответы [ 3 ]

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

Вы можете включить ведение журнала медленных запросов в MySql:

Журнал медленных запросов состоит из всех операторов SQL, выполнение которых заняло более long_query_time секунд, и (по состоянию на MySQL 5.1.21) для проверки потребовалось не менее min_examined_row_limit строк. Время получения начальных блокировок таблицы не считается временем выполнения. mysqld записывает оператор в журнал медленных запросов после его выполнения и после снятия всех блокировок, поэтому порядок ведения журнала может отличаться от порядка выполнения. Значение по умолчанию long_query_time равно 10.

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

Просто прочитайте время до / после выполнения каждого запроса. Это легко, если вы используете какой-либо класс / функцию абстракции базы данных.

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

Это большой вопрос, и я могу предложить только несколько указателей - но я уверен, что в других местах на SO есть хорошие темы

сначала профилирование дБ запросов. Каждая СУБД содержит длинный список запросов. MySql включен с одним флагом конфигурации. Это будет перехватывать запросы, которые выполняются длительное время (это может быть порядка секунд, что является большим временем для современной СУБД).
Также каждая СУБД возвращает время для выполнения со своим набором записей. Я настоятельно рекомендую вам перенаправить все вызовы DNase через одну общую функцию, скажем «executequery», затем вытащить SQL и время выполнения в файл для дальнейшего использования

в целом медленные запросы происходят из-за плохого оформления таблицы и отсутствия хороших индексов. Запустите «объяснение» для любого запроса, который вас беспокоит - dbae скажет вам, как он будет выполнять этот запрос - любые «проверки таблицы» указывают, что СУБД не может найти индекс в таблице, который удовлетворяет требованиям запроса

Следующее профилирование - это термин, чаще всего используемый для определения времени, затрачиваемого на выполнение частей программы, то есть того, которое для циклов используется все время, или времени, затрачиваемого на установление соединения с БД.

То, что вы хотите, это тестирование производительности

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