VACUUM должен быть регулярной частью операций с базой данных. Хотя, возможно, это не источник вашей проблемы.
Мы рекомендуем часто пылесосить активные производственные базы данных.
(хотя бы ночью), чтобы убрать мертвые строки. После добавления или
удалив большое количество строк, было бы неплохо выдать
Команда VACUUM ANALYZE для уязвимой таблицы. Это обновит
системные каталоги с результатами всех последних изменений, и позволяют
Планировщик запросов PostgreSQL для лучшего выбора при планировании запросов.
Опция FULL не рекомендуется для обычного использования, но может быть
полезно в особых случаях. Например, когда вы удалили или
обновил большинство строк в таблице и хотел бы, чтобы таблица
физически сжать, чтобы занять меньше места на диске и позволить быстрее таблицы
сканы. VACUUM FULL обычно сжимает стол больше, чем обычный
ВАКУУМ будет.
Поскольку у вас разные затраты на последовательное выполнение, одно под VMWare, а другое без изменений базы данных, я бы сказал, что виртуализация имеет некоторый эффект. Я почти уверен, что виртуальная машина будет иметь меньше оперативной памяти, чем обычное оборудование, но у меня нет способа проверить это или проверить его влияние на оптимизатор запросов прямо сейчас.