Как сравнить два SQL-запроса для запуска в Postgres

Мне нужно сравнить два запроса, которые будут выполняться в моей базе данных Postgres.

Как мне узнать время выполнения и любую другую статистику, чтобы я мог создать надежный эталон между ними?

Вы используете EXPLAIN ANALYZEthinkbot.com/blog/reading-an-explain-analyze-query-plan

Juan Carlos Oropeza 21.05.2019 22:51
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
1
622
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу придумать две интересные точки данных для сбора и сравнения:

  1. Время исполнения.

    Для этого просто выполните запрос, используя psql, подключенный через сокеты UNIX (чтобы исключить сеть), и используйте команду psql\timing, чтобы измерить время выполнения, как видно на клиенте.

    Не используйте для этого EXPLAIN (ANALYZE), так как это добавит заметных накладных расходов, которые повлияют на ваши измерения.

    Обязательно запустите запрос несколько раз, чтобы получить надежный номер. Это число будет соответствовать времени выполнения с теплым кешем.

    Если вы хотите измерить время выполнения с холодным кешем, перезапустите PostgreSQL и очистить кеш файловой системы.

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

    Для этого запустите EXPLAIN (ANALYZE, BUFFERS) один раз для каждого запроса.

    Количество затронутых блоков имеет большое значение для производительности: чем меньше блоков затрагивает запрос, тем быстрее он (часто) будет. Это число особенно важно для производительности с холодным кешем; чем меньше блоков, тем меньше время выполнения будет зависеть от кэширования.

Другие вопросы по теме