Ваше первое утверждение обязательно верно:
Если 75% ОЗУ используется для общих буферов, , то только 25% доступно для других вещей, таких как обработать личную память.
work_mem
- это верхний предел памяти, которую одна операция («узел») в плане выполнения готова использовать для таких операций, как создание ha sh или растровое изображение или сортировка. Это не означает, что каждая операция выделяет столько памяти, это всего лишь предел.
Без претензий на абсолютную надежность, вот мое личное правило:
shared_buffers
+ max_connections
* work_mem
должно быть меньше или равно доступной оперативной памяти. Тогда вам вряд ли хватит памяти.