Комментарии 12
DBA и так используют скрипты для оптимизации настроек под системные ресурсы при установке. Дописывать в конец postgresql.conf кажется не лучшее решение. Лучше уж отдельный журнал с историей изменений.
Shared buffers от 25% RAM - В любом посте про оптимизацию postgres.
Как насчёт effective io concurrency / random page cost? Определит под виртуализацией?
Есть примеры менее популярных параметров для оптимизации?
А куда бы Вы предложили писать отдельный журнал и зачем? В pgpro_tune настройки попадают в конец postgresql.conf с заголовком и футером, то есть получается своего рода журнал запуска автонастройки. Всё лишнее в этой секции можно убрать или поправить.
Как насчёт effective io concurrency / random page cost? Определит под виртуализацией?
Нет конечно. Если ОС не определила, куда там постгресу угадывать, какие по типу диски, круглые или квадратные. Просто по-умолчанию считаем, что в современных серверах диски твёрдотельные. Это будет верно в 90%. Кто бы ещё io scheduller в ОС при этом настроил...
Есть примеры менее популярных параметров для оптимизации?
Конечно есть. Настройки по сжатию, autoprepare_threshold
, log2_num_lock_partitions
и дальше будет больше.
Смысл автонастройки — не заменить человека, особенно квалифицированного, а туповатым роботом получить сразу после установки более-менее адекватно настроенную СУБД. В СУБД от Postgres Pro и раньше была возможность автонастройки, но её можно было запустить только во время инициализации кластера, и только если явно указать. Этот новый функционал позволит запускать автонастройку автоматом всегда, а также явно по мере надобности, например, после изменения аппаратной конфигурации сервера. Во-первых, не забываем, что есть много DBA, которые не настолько хорошо умеют настраивать постгрес, что просто боятся что-то трогать, а если трогают, то часто не то и не так. Во-вторых, квалифицированные DBA могут просто посчитать параметры по памяти, если её увеличили в виртуалке, а лишнее стереть.
Оставлю это здесь: https://pgconfigurator.cybertec.at/
А когда это появится и как будет называться пакет?
pgpro_tune уже выходит в составе текущих (майских) релизов всех редакций продуктов, от 1С до Enterprise, как неотъемлемая часть дистрибутивов. Отдельный пакет для него не требуется.
Здравствуйте,
Печально, что pgpro_tune нельзя передать заданное количество ядер и количество памяти. Надо организовать множество инстансов внутри lxc машины, а утилита видит только характеристики хостовой машины. Если бы была возможность вручную указать, было бы чудесно.
При запуске из docker так же, видит только хостовые параметры (железячные)
docker run -d
--memory=10g
--cpus=8 \
Можно передать и параметрами, и переменными окружения. Всё есть в документации:
Спасибо, пропустил.
export MEMMB=10240
export NCPU=8
Перед initdb почему-то не срабатывают.
Спасибо ещё раз! Всё отлично работает, не прочитал внимательно сразу.
initdb --pgdata=$PGDATA --encoding=unicode --locale=ru_RU.UTF-8 --auth=trust --pwfile=/tmp/pwfile --tune="--set MEMMB=10240 --set NCPU=8"
или
su -l postgres -c 'initdb --pgdata='${PGDATA}' --encoding=unicode --locale=ru_RU.UTF-8 --auth=trust --pwfile=/tmp/pwfile --tune="--set MEMMB='${MEMMB}' --set NCPU='${NCPU}'"'
Оптимальная настройка Postgres Pro в один клик с pgpro_tune