Влияние виртуализированных систем на планы объяснения? - PullRequest
2 голосов
/ 08 июля 2011

У меня странные и разные результаты для объяснения планов на Postgresql. Сервер Postgresql установлен на компьютере VMWare, и при выполнении нескольких планов объяснения для данного запроса SQL возвращаются разные результаты. Мне кажется, что аппаратная виртуализация может предоставлять «ошибочную» информацию серверу Postgresql, так что он возвращает «аномальные и несколько случайные» измерения затрат. Я прав или есть какое-то другое объяснение этих удивительных и странных результатов?

В любом случае, если вы знаете что-либо, я буду признателен за любые полезные документы.

Ответы [ 2 ]

1 голос
/ 12 июля 2011

VACUUM должен быть регулярной частью операций с базой данных. Хотя, возможно, это не источник вашей проблемы.

Мы рекомендуем часто пылесосить активные производственные базы данных. (хотя бы ночью), чтобы убрать мертвые строки. После добавления или удалив большое количество строк, было бы неплохо выдать Команда VACUUM ANALYZE для уязвимой таблицы. Это обновит системные каталоги с результатами всех последних изменений, и позволяют Планировщик запросов PostgreSQL для лучшего выбора при планировании запросов.

Опция FULL не рекомендуется для обычного использования, но может быть полезно в особых случаях. Например, когда вы удалили или обновил большинство строк в таблице и хотел бы, чтобы таблица физически сжать, чтобы занять меньше места на диске и позволить быстрее таблицы сканы. VACUUM FULL обычно сжимает стол больше, чем обычный ВАКУУМ будет.

Поскольку у вас разные затраты на последовательное выполнение, одно под VMWare, а другое без изменений базы данных, я бы сказал, что виртуализация имеет некоторый эффект. Я почти уверен, что виртуальная машина будет иметь меньше оперативной памяти, чем обычное оборудование, но у меня нет способа проверить это или проверить его влияние на оптимизатор запросов прямо сейчас.

0 голосов
/ 13 июля 2011

Планы не зависят напрямую от базового оборудования.Они являются продуктом параметров стоимости (например, random_page_cost), настроек памяти (например, work_mem) и статистики таблицы.Вы должны иметь возможность легко проверить, одинаковы ли настройки параметров между вашими двумя экземплярами.(В идеале можно вносить корректировки в эти параметры на основе характеристик оборудования, а затем вы будете получать разные планы для разных систем.) Статистика таблицы зависит от фактических данных в таблицах (вы не упоминали, были ли у вас одинаковые данные воба случая) и некоторый случайный элемент, когда статистика собирается.Убедитесь, что ANALYZE был запущен.Если вы все еще не знаете, опубликуйте планы.

...