Spec-Zone .ru
спецификации, руководства, описания, API

5.2.5. Медленный Журнал запросов

Медленный журнал запросов состоит из SQL-операторов, которые взяли больше чем long_query_time секунды, чтобы выполниться и требуемый, по крайней мере, min_examined_row_limit строки, которые будут исследованы. Минимальные и значения по умолчанию long_query_time 0 и 10, соответственно. Значение может быть определено к разрешению микросекунд. Для того, чтобы зарегистрировать к файлу, времена пишутся включая часть микросекунд. Для того, чтобы зарегистрировать к таблицам, только пишутся целочисленные времена; часть микросекунд игнорируется.

По умолчанию административные операторы не регистрируются, ни являются запросами, которые не используют, индексирует для поисков. Это поведение может быть изменено, используя --log-slow-admin-statements и log_queries_not_using_indexes, как описано позже.

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

По умолчанию медленный журнал запросов отключается. Чтобы определить начальное медленное состояние журнала запросов явно, использовать --slow_query_log[={0|1}]. Без параметра или параметра 1, --slow_query_log включает журналу. С параметром 0, эта опция отключает журнал. Чтобы определить имя файла журнала, использовать --slow_query_log_file=file_name. Чтобы определить место назначения журнала, использовать --log-output (как описано в Разделе 5.2.1, "Выбирая Общий Запрос и Замедляют Выходные Места назначения Журнала запросов").

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

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

Когда медленный журнал запросов включается, вывод записей сервера любым местам назначения, определенным --log-output опция или log_output системная переменная. Если Вы включаете журналу, сервер открывает файл журнала и пишет сообщения запуска в него. Однако, далее журналирование запросов к файлу не происходит если FILE место назначения журнала выбирается. Если место назначения NONE, сервер не пишет запросов, даже если медленный журнал запросов включается. Определение имени файла журнала не имеет никакого эффекта на журналирование, если целевое значение журнала не содержит 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-slow-slave-statements параметр сервера.

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

Медленный журнал запросов может использоваться, чтобы найти запросы, которые занимают много времени, чтобы выполниться и являются поэтому кандидатами на оптимизацию. Однако, исследование длинного медленного журнала запросов может стать трудной задачей. Чтобы сделать это легче, можно обработать медленный файл журнала запросов, используя mysqldumpslow команду, чтобы суммировать запросы, которые появляются в журнале. См. Раздел 4.6.9, "mysqldumpslow — Суммируют Медленные Файлы Журнала запросов".