За последние 24 часа нас посетили 58885 программистов и 1810 роботов. Сейчас ищут 2392 программиста ...

Как отследить быстродействие запросов.

Тема в разделе "MySQL", создана пользователем Vovchik69, 30 ноя 2009.

  1. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Доброго времени суток. Можно ли каким нибудь образом посмотреть сколько времени уходит на выполнение каждого запроса в сценарии. Про сервис записи медленных запросов я знаю ,но там я так понимаю меньше секунды не поставишь. А у меня сайт стоит на локальной машине и любой даже медленный запрос выполняется меньше секунды. Давно уже озадачился этой проблемой но пока ничего не нашел. Единственное чем пока пользуюсь , это временными метками, но это не очень удобно. Да и после каждого запроса замучишся ставить. В идеале хотелось бы видеть лог выполнения сценария в котором отображается сам запрос, начало выполнения, время выполнения и завершение выполнения. Это реально (не вставляя непосредственно в код сайта запись протоколирование запросов)? Или вообще выевление перегруженных мест в коде как то по другому делается? У меня стоит стандартная связка Apache+PHP+MySQL.
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    PHP:
    1. <?php
    2. function mquery($sql) {
    3. //метка
    4. ...
    5.  
    6. //метка
    7. ...
    8.  
    9. }
     
  3. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Спасибо. Как вариант рассматривается. Я что то сам ступил, не догадался в функцию метки встроить. Но всежь хотелось что то типа внешнего мониторинга, не касаясь самого сценария. Или я ерундой озадачился и все делают примерно как вы предложили.
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    В mysql есть логи. Причем отдельно для "медленных" запросов.

    В некоторых фреймворках (например ZF) есть профайлеры запросов Zend_Db_Profiler.
     
  5. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Это я знаю. Просто как писал выше меньше секунды значение не ставится а у меня на локальной машине все запросы меньше секунды выполняются.
    Есть такая тема, согласен. Просто весь пакет не хочется ставить (ну , типа мы за лецензеонное ПО а оно совсем не дёшего). Или я чегото не понял?
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    ZF - бесплатен.

    У mysql есть свой профайлер.

    http://dev.mysql.com/doc/refman/5.0/en/ ... files.html

    Можешь его запускать при старте скрипта и снимать статистику при завершении.
     
  7. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Спасибо. Видимо действительно не правильно понял. Я просто не очень специалист. Так написать что нибудь могу а вот с серверами совсем начальный уровень. По первому, попробую поставить. По второму, я правльно понимаю, стартую с консоли потом выполняю сценарий из тогоже IE и потом смотрю в консоли результат. Или совсем уже туплю?
     
  8. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    1й пробовать ставить бесполезно. Ты или пишешь с использованием фреймворка или не пишешь.

    Что касается второго. То тебе нужно не в консоли стартовать его. А в начале скрипта.
    примерно так
    PHP:
    1. mysql_query("SET PROFILING=1");
    И в конце скрипта выводить результат
    PHP:
    1. mysql_query("SHOW PROFILE");
     
  9. Vovchik69

    Vovchik69 Активный пользователь

    С нами с:
    14 ноя 2007
    Сообщения:
    54
    Симпатии:
    0
    Ещё раз спасибо. По первому я понимаю что это. Попробовать поставить имелось ввиду как раз поработать в нем. По второму, интересно попробую. Похоже на то что как раз мне нужно. Я MySQL к сожалению пока на уровне запросов пользую. Туда, обратно, выбрать, сохранить ну и т.д. т.п.