Журнал медленных запросов
При запуске с параметром --log-slow-queries[=file_name] mysqld создает файл журнала, в котором сохраняются данные обо всех командах SQL, на выполнение которых ушло больше времени, чем указано в значении параметра long_query_time . Время, уходящее на первоначальную блокировку таблиц, не включается во время исполнения запроса.
Занесение данных в журнал происходит сразу по завершении исполнения запроса и снятия блокировок. Таким образом, порядок расположения записей может отличаться от порядка выполнения запросов.
Если имя файла не задано, по умолчанию ему дается имя хоста с окончанием -slow.log . Если файлу присвоено имя, не содержащее пути доступа к нему, этот файл сохраняется в каталоге с данными.
Этот журнал позволяет определить запросы, на выполнение которых ушло слишком много времени, а, значит, и обнаружить основных кандидатов на оптимизацию. Конечно, при достижении журналом значительного объема эта задача усложняется. В таком случае журнал можно пропустить через команду mysqldumpslow и получить краткий отчет о запросах, попавших в список.
При использовании ключа --log-long-format на экран выводятся и запросы, не работающие с индексами (см. раздел Параметры командной строки mysqld ).
Обслуживание файлов журналов
В MySQL предусмотрено наличие нескольких файлов журналов, позволяющих следить за всеми аспектами работы системы (см. раздел Файлы журналов MySQL). Правда, иногда приходится проверять, не занимают ли журналы лишнего места, и удалять ненужные.
При работе с журналами MySQL, вам, вероятнее всего, понадобится удалять их или создавать их резервные копии, и указывать MySQL записывать данные журналов в новые файлы (см. раздел Резервное копирование баз данных).
В системе Linux (Redhat ) для этого можно использовать сценарий mysql-log-rotate . При установке MySQL с дистрибутива RPM этот сценарий устанавливается автоматически. Обратите внимание: использовать журнал для репликации необходимо с максимальной аккуратностью!
В других ОС вы можете самостоятельно создать небольшой сценарий для обработки журналов, запускаемый из cron .
Заставить MySQL создать новый файл журнала можно с помощью команды mysqladmin flush-logs или SQL-команды FLUSH LOGS . При работе с MySQL версии 3.21 пользоваться можно только командой mysqladmin refresh .
Эта команда выполняет следующие действия:
Если используется стандартный журнал (--log ) или журнал медленных запросов (--log-slow-queries ), файл журнала (mysql.log и 'hostname"-slow.log по умолчанию) закрывается и открывается вновь.
Если используется журнал обновлений (--log-update ), файл журнала закрывается, после чего создается новый файл с большим номером.
При использовании одного журнала обновлений нужно очистить журналы и перенести их старые файлы в резервную копию. При использовании обычной процедуры ведения журналов для этого нужно выполнить примерно следующую последовательность команд:
shell> cd mysql-data-directory shell> mv mysql.log mysql.old shell> mysqladmin flush-logs
а затем сделать резервную копию файла mysql.old и удалить его.
1 2 3
8 8 8
| |