Регистрация запросов MySQL - PullRequest
3 голосов
/ 28 января 2010

Я собираюсь приступить к разработке системы ведения журнала для будущей реализации в текущем приложении PHP для получения статистики загрузки и использования из базы данных MYSQL.

Статистика позже будет использоваться для получения информации о вызовах базы данных в секунду, времени запросов и т. Д.

Конечно, это будет использоваться только тогда, когда приложение находится на стадии тестирования, так как оно наверняка вызовет небольшую дополнительную нагрузку.

Тем не менее, мой самый большой вопрос сейчас заключается в том, должен ли я использовать MYSQL для регистрации запросов или перейти на файловую систему. Я предполагаю, что было бы немного головной болью создать что-то, что позволило бы записи из разных мест при использовании файловой системы для обработки журналов?

Как бы вы это сделали?

Ответы [ 5 ]

5 голосов
/ 28 января 2010

Используйте общий журнал, который будет отображать активность клиента, включая все запросы:

http://dev.mysql.com/doc/refman/5.1/en/query-log.html

Если вам нужна очень подробная статистика о том, сколько времени занимает каждый запрос, используйте медленный журнал с long_query_time 0 (или другим достаточно коротким временем):

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

Затем используйте http://www.maatkit.org/ для анализа журналов при необходимости.

3 голосов
/ 28 января 2010

В MySQL уже встроено ведение журналов - Глава 5.2 руководства описывает это.Возможно, вас заинтересуют Общий журнал запросов (все запросы), Журнал двоичных запросов (запросы, изменяющие данные) и Журнал замедления (запросы, которые занимают слишком много времени или не используют индексы).

Если вы настаиваете на использовании своего собственного решения, вам нужно написать промежуточный уровень базы данных, через который проходят все ваши вызовы БД, который может обрабатывать аспекты синхронизации.Относительно того, где вы их пишете, если вы находитесь в devel, это не имеет большого значения, но идея использования второго db неплоха.Вам не нужно использовать совершенно отдельную БД, если вы используете другой экземпляр MySQL (на другом компьютере или просто другой экземпляр, использующий другой порт).Я бы предпочел использовать второй экземпляр MySQL вместо файловой системы - вы получите все ваши хорошие SQL-функции, такие как SUM и AVG, для анализа ваших данных.

3 голосов
/ 28 января 2010

Если все, что вас интересует, это долгосрочный анализ не в реальном времени, включите регулярное ведение журнала запросов MySQL. Существует множество инструментов для анализа журналов запросов (как обычных, так и медленных), которые предоставляют вам информацию о времени выполнения, возвращаемых средних строках и т. Д. Похоже, вы ищете.

1 голос
/ 28 января 2010

Если вы выполняете тесты на MySQL, вы должны хранить результаты в другой базе данных, такой как Postgres, таким образом, вы не увеличите нагрузку на свои операции.

0 голосов
/ 28 января 2010

Я согласен с macabail, но добавил бы, что вы можете связать это с заданием cron и простым скриптом для извлечения и генерации любой статистики, которая вам может понадобиться.

...