длительности запроса:
1. В любом случае включает фактические планы для всех запросов, но фиксирует в лог только длительные?
2. Или для длительных запросов отдельно запрашивается explain + analyze, т.е. не оказывает влияние на остальные запросы?
Т.е. каждый запрос в этом случае выполняется 2 раза по факту, но для одного отбрасывается результат, так ?
Для каждого explain и потом парсер времени. А ну да как вы и написали
Спасибо огромное, развеяли сомнения!
не совсем так, насколько я понимаю. Насколько я понял, запрос два раза не выполняется. Просто в момент начала исполнения запроса расширение устанавливает специальный флаг, в результате которого при выполнении запроса заодно формируется его explain analyze. В конце выполнения смотрим на результат explain и если большая длительность — логгируем.
Там ничего отдельно не запрашивается вообще, и "дважды" не выполняется. При старте executor проверяется, нужна ли instrumentation (т.е. сам факт включения auto_explain даёт overhead), и в конце выполнения запроса проверяется, нужно ли записывать в лог план (сама запись — тоже overhead). Вот и всё.
Тогда как воспринимать эту цитату из мануала explain? "Имейте в виду, что с указанием ANALYZE оператор действительно выполняется. Хотя EXPLAIN отбрасывает результат, который вернул бы SELECT, в остальном все действия выполняются как обычно. " Тут складывается впечатление , что Select выполняется два раза, но результат показывает единожды.
1. Я не знаю, как Вам удалось это так прочитать. 2. Это не имеет никакого отношения к auto_explain .
Обсуждают сегодня