Para começar, eu coloquei estas linhas em /etc/my.cnf
[mysqld]
log-output=TABLE
slow-query-log
slow-query-log-file=slow-queries.log
Quando você usa o log lento com o log_output sendo TABLE, a tabela NÃO é criada em / var / lib / mysql. A tabela é criada na pasta mysql, / var / lib / mysql / mysql. O mecanismo de armazenamento para o log lento baseado em tabela padrão é CSV. Você pode verificar isso fazendo o seguinte:
use mysql
show tables;
Você deve ver a tabela slow_log
MySQL> show create table slow_log\G
*************************** 1. row ***************************
Table: slow_log
Create Table: 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
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
1 row in set (0.00 sec)
Aqui está como converter o arquivo CSV para a tabela de log lento para MyISAM
SET @old_log_state = @@global.slow_query_log;
SET GLOBAL slow_query_log = 'OFF';
ALTER TABLE mysql.slow_log ENGINE = MyISAM;
SET GLOBAL slow_query_log = @old_log_state;
Tenha em mente que o MyISAM convertido não possui nenhum índice.
Esta é uma coluna chamada 'start_time', que é um timestamp. Sinta-se à vontade para indexá-lo assim:
SET @old_log_state = @@global.slow_query_log;
SET GLOBAL slow_query_log = 'OFF';
ALTER TABLE mysql.slow_log ADD INDEX (start_time);
SET GLOBAL slow_query_log = @old_log_state;
Deixe-nos saber como isso funcionou, por favor !!!