* from test where a < 500;
QUERY PLAN
----------------------------------------------------------------------------------------------
Seq Scan on test (cost=0.00..1.05 rows=1 width=4) (actual time=0.007..0.008 rows=2 loops=1)
Filter: (a < 500)
Rows Removed by Filter: 6
Planning Time: 0.021 ms
Execution Time: 0.023 ms
(5 rows)
Time: 2.637 ms
Таблица 8 строк. В analyze пишет 0.007, 0.021, 0.023... Т.е. это всё суммарно меньше 0.1 мс. При этом общее время выполнения запроса 2.637 мс. Это как? Где столько набралось?
Кажется дошло. Эти 2мс это по сути аналог времени выполнения dbms_xplan.display_cursor в oracle. Это время потраченное на сборку и отрисовку explain'а
Ну, я тоже так предполагаю. Другого объяснения нет.. Он просто считает время выполнения и самого эксплейна.
Причём при последовательных исполнениях время \timing , planing и execution уменьшается . \timing время уменьшается особенно заметно
Я же Вам уже ответил, без "предположений". ;) См. https://t.me/pgsql/262801
И ведь PostgreSQL — это opensource проект, зачем гадать, если действительно интересно? ;) https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/bin/psql/common.c;h=dfbc22970f83165aa6bb16b9e3f885496ca524b4;hb=HEAD#l1300
IMHO не fetch. Как мне кажется - формирование результата explain'а.
Спасибо! Прям лучше чем в исходниках не скажешь.
Я прямо даже растерялся, что и отвечать на "IMHO" после ссылки на исходники, если честно. ;) Не за что!
Ох уж эти программисты-зазнайки. Все б им тебя в исходники носом ткнуть. Хотя и ежу понятно, что почти никто их прочесть и понять не сможет.. 🤷♂️
Если это не сарказм — да Вы откройте, там простой и хорошо читаемый (и подробно комментированный, на крайний случай) код, который понимаю даже я, хотя на C сто лет ничего не писал. ;)
Ну, к слову, есть много людей во вселенной, которые не давно, а вообще не писали на Си.. 🤷♂️ Программы уровня хеллоуворлд и сортировки пузырьком за программирование я не считаю..
Для таких людей я как раз и написал "подробно комментированный". ;) Т.е., в отличие от closed source, у Вас в случае проблем действительно есть вариант "читаете исходники, и уже только потом начинаете биться головой о клавиатуру".
а вы попробуйте. хотя бы начните читать README файлы в исходниках и комментарии. там тонны полезной информации
Та разница в \timing при первом запросе - это про прогрев кэша каталога при анализе и rewrite`е приходящего запроса, эти стадии не замеряются в explain analyze
Обсуждают сегодня