2016-11-23 3 views
1

Я пытаюсь собрать некоторые статистические данные о худших выполнении запросов в моей базе данных. Я включил медленное ведение журнала MySQL и отслеживал таблицу slow_log в базе данных.MySql slow_log группировка запросов

Я пытаюсь получить количество уникальных запросов подсчитывать в день, что-то вроде этого:

Date    count  query 
2016-11-20  15   'SELECT * FROM XYAA' 
2016-11-20  196  'SELECT count(*) FROM BLAH' 
2016-11-19  7   'SELECT * FROM XYAA' 
2016-11-19  296  'SELECT count(*) FROM BLAH' 

slow_log структура таблицы:

CREATE TABLE `slow_log` (
    `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `user_host` mediumtext NOT NULL, 
    `query_time` time NOT NULL, 
    `lock_time` time NOT NULL, 
    `rows_sent` int(11) NOT NULL, 
    `rows_examined` int(11) NOT NULL, 
    `db` varchar(512) NOT NULL, 
    `last_insert_id` int(11) NOT NULL, 
    `insert_id` int(11) NOT NULL, 
    `server_id` int(10) unsigned NOT NULL, 
    `sql_text` mediumtext NOT NULL, 
    `thread_id` bigint(21) unsigned NOT NULL 
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log' | 
+0

Дайте нам структуры, вы ожидаете, что мы угадаем их? – sagi

+0

@fancyPants, как работает запрос подсчета, повторно изобретающий колесо? –

+0

@sagi Я добавил структуру таблицы slow_query –

ответ

0

Попробуйте это:

SELECT DATE(start_time) as `date`, 
     COUNT(*) as `count`, 
     sql_text as query 
FROM `slow_log` 
GROUP BY DATE(start_time) , sql_text 
+0

Лучше, чем 'COUNT (*)' is 'SUM (query_time)'. Последнее измеряет влияние запроса на систему - будь то короткие короткие запросы или несколько длинных запросов. –

Смежные вопросы