Spec-Zone.ru › MySQL 5.7

5.4.5 Журнал медленных запросов

Журнал медленных запросов содержит SQL-запросы, выполнение которых занимает более long_query_time секунд и требуют проверки по крайней мере min_examined_row_limit строк. Журнал медленных запросов можно использовать для поиска запросов, которые выполняются долго и, следовательно, являются кандидатами для оптимизации. Однако просмотр большого журнала медленных запросов может быть длительной задачей. Для упрощения этого вы можете использовать команду mysqldumpslow для обработки файла журнала медленных запросов и сводки его содержимого. См. Раздел 4.6.8, «mysqldumpslow — Сводка файлов журнала медленных запросов».

Время получения начальных блокировок не учитывается как время выполнения. mysqld записывает оператор в журнал медленных запросов после его выполнения и после того, как все блокировки будут освобождены, поэтому порядок в журнале может отличаться от порядка выполнения.

  • Параметры журнала медленных запросов

  • Содержимое журнала медленных запросов

Параметры журнала медленных запросов

Минимальное и значение по умолчанию для long_query_time — 0 и 10 соответственно. Значение может быть указано с точностью до микросекунд.

По умолчанию административные операторы не регистрируются, как и запросы, которые не используют индексы для поиска. Это поведение можно изменить с помощью log_slow_admin_statements и log_queries_not_using_indexes, как описано ниже.

По умолчанию журнал медленных запросов отключен. Чтобы явно указать начальное состояние журнала медленных запросов, используйте --slow_query_log[={0|1}]. Без аргумента или с аргументом 1, --slow_query_log включает журнал. С аргументом 0 этот параметр отключает журнал. Для указания имени файла журнала используйте --slow_query_log_file=file_name. Для указания места назначения журнала используйте системную переменную log_output (как описано в Разделе 5.4.1, «Выбирать места назначения журнала общих запросов и журнала медленных запросов»).

Примечание

Если вы укажите место назначения журнала TABLE, см. Журнальные таблицы и ошибки «слишком много открытых файлов».

Если вы не укажете имя для файла журнала медленных запросов, по умолчанию оно будет host_name-slow.log. Сервер создает файл в каталоге данных, если не указан абсолютный путь для другого каталога.

Чтобы отключить или включить журнал медленных запросов или изменить имя файла журнала во время выполнения, используйте глобальные системные переменные slow_query_log и slow_query_log_file. Установите slow_query_log в 0, чтобы отключить журнал, или в 1, чтобы включить его. Установите slow_query_log_file, чтобы указать имя файла журнала. Если файл журнала уже открыт, он закрывается, и открывается новый файл.

Сервер записывает меньше информации в журнал медленных запросов, если вы используете параметр --log-short-format.

Чтобы включить административные операторы в журнал медленных запросов, включите системную переменную log_slow_admin_statements. Административные операторы включают ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE и REPAIR TABLE.

Чтобы включить запросы, не использующие индексы для поиска строк, в операторы, записываемые в журнал медленных запросов, включите системную переменную log_queries_not_using_indexes. (Даже при включении этой переменной сервер не регистрирует запросы, которые не получили бы выгоды от наличия индекса из-за того, что в таблице меньше двух строк.)

Когда запросы, не использующие индекс, регистрируются, журнал медленных запросов может быстро увеличиваться. Можно установить ограничение на скорость этих запросов, задав системную переменную log_throttle_queries_not_using_indexes. По умолчанию эта переменная равна 0, что означает отсутствие ограничения. Положительные значения накладывают минутное ограничение на запись запросов, не использующих индексы. Первый такой запрос открывает 60-секундное окно, в течение которого сервер записывает запросы до заданного лимита, а затем подавляет дополнительные запросы. Если при завершении окна существуют подавленные запросы, сервер регистрирует сводку, указывающую их количество и общее время, потраченное на них. Следующее 60-секундное окно начинается, когда сервер записывает следующий запрос, не использующий индексы.

Сервер использует управляющие параметры в следующем порядке, чтобы определить, записывать ли запрос в журнал медленных запросов:

  1. Запрос либо не должен быть административным оператором, либо log_slow_admin_statements должен быть включен.

  2. Запрос должен занимать по крайней мере long_query_time секунды, или log_queries_not_using_indexes должен быть включен, и запрос не использовал индексы для поиска строк.

  3. Запрос должен был проверить по крайней мере min_examined_row_limit строк.

  4. Запрос не должен быть подавлен в соответствии с настройкой log_throttle_queries_not_using_indexes.

Системная переменная log_timestamps управляет часовым поясом временных меток в сообщениях, записываемых в файл журнала медленных запросов (а также в файл журнала общих запросов и файл журнала ошибок). Она не влияет на часовой пояс сообщений журнала общих запросов и журнала медленных запросов, записываемых в журнальные таблицы, но строки, извлеченные из этих таблиц, можно преобразовать из местного часового пояса в любой желаемый часовой пояс с помощью CONVERT_TZ() или путем установки системной переменной сеанса time_zone.

Сервер не регистрирует запросы, обработанные кэшем запросов.

По умолчанию репликация не записывает запросы реплики в журнал медленных запросов. Чтобы изменить это, включите системную переменную log_slow_slave_statements. Обратите внимание, что если используется репликация на основе строк (binlog_format=ROW), log_slow_slave_statements не имеет эффекта. Запросы добавляются в журнал медленных запросов реплики только тогда, когда они регистрируются в формате оператора в бинарном журнале, то есть, когда binlog_format=STATEMENT задано, или когда binlog_format=MIXED задано и оператор регистрируется в формате оператора. Медленные запросы, которые регистрируются в формате строк при binlog_format=MIXED задано или которые регистрируются при binlog_format=ROW задано, не добавляются в журнал медленных запросов реплики, даже если log_slow_slave_statements включено.

Содержание журнала медленных запросов

Когда журнал медленных запросов включен, сервер записывает вывод в любые места, указанные переменной системы log_output. Если вы включите журнал, сервер откроет файл журнала и запишет в него сообщения об инициализации. Однако дальнейшая запись запросов в файл не происходит, если не выбран пункт FILE для назначения журнала. Если назначено NONE, сервер не запишет ни одного запроса, даже если журнал медленных запросов включен. Установка имени файла журнала не оказывает никакого влияния на запись, если FILE не выбран в качестве пункта назначения вывода.

Если журнал медленных запросов включен и FILE выбран в качестве пункта назначения вывода, каждое предписание, записанное в журнал, предваряется строкой, начинающейся с символа # и содержащей эти поля (все поля на одной строке):

  • Query_time: duration

    Время выполнения предписания в секундах.

  • Lock_time: duration

    Время получения блокировок в секундах.

  • Rows_sent: N

    Количество строк, отправленных клиенту.

  • Rows_examined:

    Количество строк, проверенных слоем сервера (без учета обработки, внутренней для движков хранилища данных).

Каждое предписание, записанное в файл журнала медленных запросов, предваряется инструкцией SET, которая включает отметку времени, указывающую, когда медленное предписание было заложено в журнал (что происходит после завершения выполнения предписания).

Пароли в предписаниях, записанных в журнал медленных запросов, переписываются сервером, чтобы они не появлялись в явном виде в открытом тексте. См. Раздел 6.1.2.3, «Пароли и ведение журнала».

Начиная с MySQL 5.7.38, предписания, которые невозможно разобрать (например, из-за синтаксических ошибок), не записываются в журнал медленных запросов.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/slow-query-log.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API