Я пытаюсь подсчитать все запросы SELECTS, UPDATES, INSERTs на моем сервере MySQL. Основная идея состоит в том, чтобы сказать в конце дня: «У нас было x запросов сегодня, это x1 выбор, x2 вставки и т. Д.».
Как мне это сделать?
Спасибо!!
Текущие версии MySQL поддерживают два разных типа журналов запросов:
Во-первых, общий журнал запросов отслеживает все операторы, выполняемые на сервере MySQL, включая SELECT. Но он медленный, неэффективный и может легко снизить производительность производственной базы данных, поэтому будьте осторожны с ним.
В зависимости от того, какую версию MySQL вы используете, вы должны использовать либо параметр --log, либо параметры --general-log и --general_log_file, вместе, чтобы включить общий журнал запросов и контролировать, где он пишет. В документах есть более подробная информация:
В случае, если время выполнения общего журнала запросов слишком велико, вы можете подумать, может ли двоичный журнал (binlog) удовлетворить ваши потребности. Бинлог отслеживает любые операторы, которые могут обновлять данные или схему, но не операторы только для чтения, такие как SELECT. Но binlog действительно быстрый и эффективный для диска, и его также можно использовать для репликации, резервного копирования / восстановления и т. Д.
Основной параметр для включения binlog - это '--log-bin', и есть некоторые другие связанные параметры, которые точно контролируют его работу. Утилита mysqlbinlog (часть основной установки сервера MySQL) может анализировать двоичный формат binlog обратно в операторы SQL, которые вы можете передать любому сценарию или программе, которые вы используете для суммирования запросов (например, mysqlbinlog <BIN_LOG_FILENAME> | <YOUR_SCRIPT_NAME>
. См. Соответствующие страницы документации для получения дополнительной информации:
MySQL уже поддерживает внутренние счетчики:
mysqladmin ext | grep -e 'Com_\(update\|select\|insert\)'
нет необходимости в файлах журналов / таблицах / tcpdumping / maatkit.
журналы все в порядке - ответы, упомянутые Иросой и Райаном, великолепны, но вы можете сделать это полностью пассивно - без включения ведения журнала. Взгляни на мк-запрос-дайджест из мааткит. он может анализировать не только журналы mysql, но и трафик, захваченный с помощью tcpdump. и «бесплатно» он даст вам хорошую разбивку по типам запросов / времени выполнения и т. д.
Отредактируйте my.cnf и добавьте
log = / путь / к / любому / файлу / you.want
и перезапустите MySQL.
Вы найдете все запросы, зарегистрированные в указанном вами файле.
Помимо двух упомянутых решений (журнал запросов MySQL и mk-query-digest
) вы можете взглянуть на Прокси MySQL который можно использовать для регистрации запросов, отправленных на ваш mysqld
.