Первое, что приходит на ум, - это то, что autovacuum (фоновая задача обслуживания в PostgreSQL: http://www.postgresql.org/docs/current/interactive/routine-vacuuming.html#AUTOVACUUM) может выполнять некоторую работу, которая повторно заполняет ваш кэш трудно предсказуемыми способами.Вы можете отключить его, но имейте в виду, что это может привести к раздутию, плохой статистике, неправильному выбору плана и дополнительным нагрузкам на внешние процессы - поэтому это обычно не рекомендуется.Другим способом решения этой проблемы является запуск VACUUM FREEZE ANALYZE после загрузки ваших данных, чтобы перевести все в исправное состояние, остановить PostgreSQL, очистить кэш вашей ОС, а затем запустить и выполнить тест.
Другим возможным источником проблем могут быть контрольные точки;вы должны убедиться, что у вас достаточно высоко настроены контрольные точки, чтобы избежать частых принудительных контрольных точек, и вы должны рассмотреть параметр checkpoint_timeout с точки зрения того, когда контрольные точки появятся во время вашего теста.
Также возможно, что карта контроллера RAID илиЖесткий диск может быть достаточно кэширующим, чтобы иметь значение - я не знаю, очищает ли его очистка кэша ОС, но я сомневаюсь в этом.
В общем, имейте в виду, что PostgreSQL поставляется с настройками, разработанными, чтобы позволить базе данныхзапускать и работать на небольшом ноутбуке - для оптимальной производительности обычно требуется некоторая настройка, поэтому, если ваши тесты не проверяют влияние различных параметров конфигурации, вы можете проверить общую конфигурацию перед сравнительным тестированием.