Добавить вызывающий php-скрипт в mysql-slow.log

Если вы включите линию

log_slow_queries = /var/log/mysql/mysql-slow.log

в

/etc/my.cnf or /etc/mysql/my.cnf

тогда будут записываться все запросы, которые занимают больше времени, чем настройка в long_query_time,

На сервере, на котором размещено много веб-сайтов, вы получите записи, которые показывают, какой хост вызвал какое время в форме, например:

# Time: 130508  0:04:07
# User@Host: dbuser[dbhost] @ localhost []
# Query_time: 9.354343  Lock_time: 0.000094 Rows_sent: 0  Rows_examined: 1
use database_name;
SET timestamp=1367964247;
UPDATE some_table SET something='some data'

но самая важная информация отсутствует: какой сценарий вызвал этот запрос? И несколько медленных запросов внутри одного и того же скрипта не складываются во времени, поэтому было бы неплохо иметь анализ, который бы автоматически определял имя скрипта.

Можно ли добавить имя PHP-скрипта в этот журнал?

Или, может быть, каким-то образом объединить различные журналы как-то в сценарии анализа, который выяснит, какой сценарий был вызван в то время, когда вызывался медленный запрос?

2 ответа

MySQL не может узнать, какой PHP-скрипт запущен. Все, что он знает, это то, что он получил соединение от имени пользователя, пароля, хоста, и ему был задан какой-то запрос. Таким образом, это регистрирует, что это имеет в наличии.

Если вы разработчик, вы должны быть достаточно знакомы с вашим приложением, чтобы найти код, выполняющий запрос, в течение нескольких секунд. Если вы не разработчик или не знакомы с приложением, попробуйте grep, Или свяжитесь с разработчиком, который знаком с этим.

Вы можете добавить комментарий к своим запросам, и это сделает всю работу:

      SELECT * FROM table # php file ./path/to/file.php
Другие вопросы по тегам