Анализатор журнала запросов MySQL на суд зрителя

camka

не самка
Анализатор журнала запросов MySQL на суд зрителя

sourceforge.net/projects/myprofi

Сваял-таки утилитку для определения наиболее популярных SQL запросов на базе анализа журнального файла mysql (mysql query log). Получает на вход лог запросов и выдает статистику самых популярных из них, группируя по схожести, удаляя изменяющиеся данные, оставляя только основные шаблоны.


[sql]
select id from user where login='root';
select id from user where login='admin';
-- группируются в:
select id from user whree login={}
[/sql]

Полезна для выяления наиболее часто выполняемых запросов на сервере с целью их последующей оптимизации.

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

Требует php cli версии 5.х.

Запускается:
Код:
$ php parser.php mysqlquery.log >out.txt
Заранее благодарю.

-~{}~ 25.10.06 15:23:

Возможно, лучше будет передвинуть топик в ветку PHP & Mysql
 

Krishna

Продался Java
Начиная с мускула 5.1 логи будут опционально писаться в таблички мускула, так что...
 

WP

^_^
Выложи куда-нить файл, а то с него геморно сливать.
 

camka

не самка
Krishna
Почему ж это отпадет. Попробую пояснить.

Дело в том, что выводить статистику по количеству запросов в том виде, в каком они присутствуют в логе - дело нехитрое: подсчитываешь количество вхождений каждого из них и сортируешь по нему же по убывающей. Или же, в случае, если они хранятся в таплице, (select query, count(*) from mysql.query_log group by query order by 2 desc.

Однако, поскольку обычно, казалось бы, одинаковые запросы (select name from user where id=1 и SELECT name FROM user WHERE id=393898) отличаются друг от друга аргументами, подставляемыми приложением во время его работы, то статистика эта будет не очень то уж и полезная для анализа, так как будет наводнена большим количеством дублирующих друг друга запросов.

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

Пример вывода можно посмотреть здесь
 

slach

Новичок
полезный утиль, спасибо

-~{}~ 26.10.06 17:25:

а почему тема в offtopic интересно
ей самое место в PHP и MySQL
 

whirlwind

TDD infected, paranoid
>отличаются друг от друга аргументами, подставляемыми приложением во время его работы

Еще один плюс в сторону использования драйверов типа Creole. При чем в данном случае, фишка распространяется на любые БД.
 
Сверху