Я выполняю некоторые задачи бенчмаркинга, используя Postgresql 9.1, работающий на Debian Linux. Я хотел бы сравнить производительность запросов, которые разделяют общую часть. Перед выполнением каждого запроса перезапустить базу данных и выполнить следующую команду:Очистка кеша для бенчмаркинга в PostgreSQL 9.1
эхо 3>/Труды/SYS/VM/drop_caches
, направленные на падение как общая память и кэш ОС. Тем не менее, я заметил, что если я запускаю ту же рабочую нагрузку на запрос с другим порядком, я получаю разные времена отклика запросов. Я подозреваю, что каким-то образом оптимизатор запросов «запоминает», как эффективно выполнять общие части запроса или повторно использовать некоторые ранее кэшированные результаты.
Есть ли у вас идеи по устранению этой проблемы? Я хотел бы получить примерно одинаковое время ответа, независимо от порядка запросов. Обратите внимание, что я разбираю вывод EXPLAIN, чтобы извлечь фактическое время работы.