在mysql服务器中查询日志慢

我在Windows 2000服务器上安装了MySQL Community Edition 5.1.41。 在my.ini文件中,我启用了慢速查询日志logging,并将输出redirect到了一个表格中。我将long_query_time设置为10秒。 然后在运行一些查询之后,我检查了慢速查询日志表,发现所有执行的查询都被logging了,并且在数据文件夹中也创build了一个名为database-slow.log的文件。 任何人都可以告诉我哪里出错了。 我正在使用内置的innodb,而不是激活innodb插件。

谢谢

对于初学者,我把这些行放在/etc/my.cnf中

 [mysqld] log-output=TABLE slow-query-log slow-query-log-file=slow-queries.log 

当使用log_output为TABLE的慢日志时,表不在/ var / lib / mysql中创build。 该表是在mysql文件夹/ var / lib / mysql / mysql中创build的。 默认的基于表格的慢日志的存储引擎是CSV。 您可以通过执行以下操作来检查:

 use mysql show tables; 

你应该看到表格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) 

以下是如何将慢日志表的CSV文件转换为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; 

请记住,转换后的MyISAM没有任何索引。

这是一个名为“start_time”的列,它是一个时间戳。 随意索引它像这样:

 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; 

让我们知道这是如何解决的,请!