Size: a a a

pgsql – PostgreSQL

2021 January 19

V

Vadim in pgsql – PostgreSQL
а work_mem сильно чувствителен к влиянию на производительность?)
источник

am

a m in pgsql – PostgreSQL
work_mem не рекомендация, это лимит.
источник

V

Vadim in pgsql – PostgreSQL
вообще это значение же не означает что каждый процесс столько памяти займет, а лишь максимально возможный размер, верно? то есть можно ее с запасом выдать, считая что все процессы одновременно не потребят столько, но и непонятно мне если 1 сессия потребила память, обратно не отдаст?
источник

am

a m in pgsql – PostgreSQL
Vadim
а work_mem сильно чувствителен к влиянию на производительность?)
На производительность сильно влияет проектирование базы и написание запросов. А ковыряние почем зря конфига редко ощутимый результат приносит.
источник

V

Vadim in pgsql – PostgreSQL
a m
На производительность сильно влияет проектирование базы и написание запросов. А ковыряние почем зря конфига редко ощутимый результат приносит.
OOMKiller пришел и процессы килял
источник

V

Vadim in pgsql – PostgreSQL
shared_buffers -20Gi , work_mem - 16mb на   64г рам
источник

am

a m in pgsql – PostgreSQL
Vadim
вообще это значение же не означает что каждый процесс столько памяти займет, а лишь максимально возможный размер, верно? то есть можно ее с запасом выдать, считая что все процессы одновременно не потребят столько, но и непонятно мне если 1 сессия потребила память, обратно не отдаст?
Смотрите в документацию уже, там подробно расписано.
work_mem задает верхний лимит, после которого будет писать на диск.
источник

am

a m in pgsql – PostgreSQL
Vadim
OOMKiller пришел и процессы килял
Um-hum. После того, как кто-то конфиг поковырял.
источник

V

Vadim in pgsql – PostgreSQL
a m
Um-hum. После того, как кто-то конфиг поковырял.
не на 128кб шаред буферов же запускаться, его все равно надо ковырять, но видимо настройки неоптимальные для нагрузки подобрали
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
a m
work_mem не рекомендация, это лимит.
Довольно мягкий, в таком случае. :)
Потому что это "лимит" на один plan node, и executor его всё равно проигнорирует, если не будет другого выхода.
К тому же, это значение больше используется при оценках, чем при выполнении.
источник

am

a m in pgsql – PostgreSQL
128 мегабайт там по умолчанию.
И почему бы и нет?
Тестировали? Разницу замеряли? Нет?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vadim
вообще это значение же не означает что каждый процесс столько памяти займет, а лишь максимально возможный размер, верно? то есть можно ее с запасом выдать, считая что все процессы одновременно не потребят столько, но и непонятно мне если 1 сессия потребила память, обратно не отдаст?
Нет, он этого не означает, к сожалению. Лучше посмотрите документацию.
источник

am

a m in pgsql – PostgreSQL
Yaroslav Schekin
Довольно мягкий, в таком случае. :)
Потому что это "лимит" на один plan node, и executor его всё равно проигнорирует, если не будет другого выхода.
К тому же, это значение больше используется при оценках, чем при выполнении.
> если не будет другого выхода
Дык на диск писать же будет.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
a m
На производительность сильно влияет проектирование базы и написание запросов. А ковыряние почем зря конфига редко ощутимый результат приносит.
Ну да, разницы от tuning более чем в 3 раза редко удаётся добиться, это верно. ;)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
a m
> если не будет другого выхода
Дык на диск писать же будет.
Нет. Просто проигнорирует, и всё.
источник

am

a m in pgsql – PostgreSQL
Yaroslav Schekin
Нет. Просто проигнорирует, и всё.
И шо, всю память мне сожрет, негодник?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vadim
OOMKiller пришел и процессы килял
Что означает, что OS неправильно настроена, а не PostgreSQL.
См. https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
a m
И шо, всю память мне сожрет, негодник?
В крайних случаях — сколько нужно будет, столько и использует.
И, опять-таки, даже если до этого не доходит, work_mem касается каждого узла запроса, поэтому один запрос может "съесть" и 4, и 10, 40 work_mem (зависит от сложности плана).
источник

V

Vadim in pgsql – PostgreSQL
ну почему ос? оом это следствие, а причина в потреблении памяти, которрое настройка постгреса регулируется, разве нет?
источник

am

a m in pgsql – PostgreSQL
Yaroslav Schekin
В крайних случаях — сколько нужно будет, столько и использует.
И, опять-таки, даже если до этого не доходит, work_mem касается каждого узла запроса, поэтому один запрос может "съесть" и 4, и 10, 40 work_mem (зависит от сложности плана).
Ну, чтобы оно в 40 потоков параллелилось — это надо настраивать уметь.
источник