Назад | Перейти на главную страницу

медленное ведение журнала запросов на сервере mysql

Я установил MySQL Community Edition 5.1.41 на сервере Windows 2000. В файле my.ini я включил медленное ведение журнала запросов и перенаправил вывод в таблицу. Я установил long_query_time на 10 секунд. Затем, выполнив несколько запросов, я проверил таблицу журнала медленных запросов и обнаружил, что все выполненные запросы были зарегистрированы, а в папке данных также был создан файл с именем 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. Таблица создается в папке mysql, / var / lib / mysql / mysql. Механизм хранения для табличного медленного журнала по умолчанию - 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;

Сообщите, пожалуйста, как это сработало !!!