Я пытался развернуть Postgres в Docker по соображениям переносимости и заметил, что производительность запросов, измеренная с помощью "объяснить анализировать", была мучительно медленной по сравнению с «голым железом».
Для таблицы с 1,7 миллиона строк запрос на «голом железе» Postgres занимает около 1,2 секунды против 4,8 секунды на Dockered Postgres, что в 4 раза больше!. Это сравнение выполняется с одним и тем же смонтированным томом как для «голого металла», так и для Docker (для Docker я использую опцию -v). Это том gp2, монтируется через консоль AWS, 60 ГБ
Я пробовал пару вещей:
Все это делается в экземпляре AWS Linux 2. На этом этапе я надеюсь получить больше предложений о том, что делать для повышения производительности.
Я использую команду docker run:
docker run -p 5432:5432 --name postgres -v /vol/pgsql/10.0/data:/var/lib/postgresql/data postgres:latest
Итак, я запустил docker info, и это драйвер хранилища, который у меня есть, Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true . Я предполагаю, что это не драйвер устройства? Спасибо.





Какой драйвер хранилища Docker вы используете? Если вы не уверены, опубликуйте вывод
docker info. Если Docker настроен на использование драйвера devicemapper на устройствах с обратной связью, это может объяснить некоторое снижение производительности.