Задать вопрос
@Khombachke
Java programmer

Влияет ли мощность компьютера/сервера на executor plan в Postgres?

Такая ситуация: есть селект запрос, на который составляем план запроса с помощью explain analyze verbose. И выполняя запрос на 2 разных устройствах, получаем различные значения для cost, rows и width:
для первого
"Limit  (cost=476.22..476.24 rows=5 width=40)\n  Output: augmented_report_table.description, (count(*) OVER (?))\n  CTE augmented_report_table\n    ->  Seq Scan on public.nc_objects  (cost=0.00..472.64 rows=73 width=32)\n          Output: nc_objects.description\n          Filter: ((nc_objects.name)::text = 'vni-0/0'::text)\n  ->  Sort  (cost=3.59..3.77 rows=73 width=40)\n        Output: augmented_report_table.description, (count(*) OVER (?))\n        Sort Key: augmented_report_table.description\n        ->  WindowAgg  (cost=0.00..2.37 rows=73 width=40)\n              Output: augmented_report_table.description, count(*) OVER (?)\n              ->  CTE Scan on augmented_report_table  (cost=0.00..1.46 rows=73 width=32)\n                    Output: augmented_report_table.description\n"

Для второго:
"Limit  (cost=485.85..485.86 rows=5 width=40)\n  Output: augmented_report_table.description, (count(*) OVER (?))\n  CTE augmented_report_table\n    ->  Seq Scan on public.nc_objects  (cost=0.00..472.64 rows=269 width=9)\n          Output: nc_objects.description\n          Filter: ((nc_objects.name)::text = 'vni-0/0'::text)\n  ->  Sort  (cost=13.21..13.88 rows=269 width=40)\n        Output: augmented_report_table.description, (count(*) OVER (?))\n        Sort Key: augmented_report_table.description\n        ->  WindowAgg  (cost=0.00..8.74 rows=269 width=40)\n              Output: augmented_report_table.description, count(*) OVER (?)\n              ->  CTE Scan on augmented_report_table  (cost=0.00..5.38 rows=269 width=32)\n                    Output: augmented_report_table.description\n"

Базы данных одинаковые, версия 11-9. Таблицы тоже одинаковые. Базы развернуты в докере. Единственное что отличается - ПК.
Может быть это причиной? Или какие еще варианты есть, почему результат отличается?
  • Вопрос задан
  • 137 просмотров
Подписаться 3 Простой 5 комментариев
Решения вопроса 1
@Khombachke Автор вопроса
Java programmer
В ообщем, без понятия в чем была причина. В итоге обновил докер до последней версии на обоих устройствах (был 20.10.8, обновил до 20.10.10) и все завелось, результаты совпадают
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Не влияет. Cost считается в попугаях, которые рассчитываются через коэффициенты (коэффициенты определяют во сколько раз медленнее или быстрее операция относительно seq_page_cost - доступа к странице при последовательном чтении).
Разница в Row/width говорит почти наверняка о проблемах со статистикой. Сделайте на обеих базах ANALYZE (можно даже VACUUM FULL ANALYZE, если базы использовались для записи).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы