В некоторых СУБД, например Microsoft SQL Server, есть средства для просмотра абсолютно всех SQL-запросов к базе данных (в MS SQL он называется Profiler). Это мощное средство, весьма полезно при отладке SQL-запросов как для программистов, так и для администраторов баз данных.
Когда вы накопили опыт работы с MySQL, у вас может возникнуть вопрос, а как проделать такую штуку с ним? Например, как увидеть, какие SQL-запросы генерирует WordPress или phpBB?
Во-первых, нужно включить журналирование запросов MySQL…
Имейте в виду, что это можно делать лишь в тестовом окружении, так как журналирование дает сильную нагрузку на сервер, ведь приходится каждый запрос записывать в текстовый файл на диске.
Откройте конфигурационный файл MySQL (в Ubuntu, к примеру, это /etc/mysql/my.cnf). Найдите секцию “Logging and Replication”:
# # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. log = /var/log/mysql/mysql.log
Здесь нужно просто раскомментировать переменную “log”. Перезапустим MySQL:
sudo /etc/init.d/mysql restart
Теперь мы готовы отслеживать запросы в реальном времени. Откройте новый терминал и запустите эту команду:
tail -f /var/log/mysql/mysql.log
Теперь запустите свое приложение. В вашем терминале сразу побегут строчки, соответствующие SQL-запросам к вашей базе данных (если же нет, то проверьте, что в настройках вашего терминала включены функции авто-скроллинга и истории).
Оказалось, что phpbb3 имеет довольно хорошо оптимизированный SQL-код. WordPress же, напротив, крайне неэффективен.
Спасибо!