Я хочу ограничить количество пользователей на каждую базу данных в среде с несколькими арендаторами. Но есть три уровня максимальных соединений, и я должен быть благодарен за любые советы.Где определить максимальное количество соединений в Postgres?
Уровень 1 Весь сервер
При редактировании конфигурации для Postgresql я могу установить соединение Max для всех баз данных на сервере
postgresql.conf = max_connections = 100
Уровень 2 в базе данных
Я могу выбрать и установить ограничение доступа к базе данных для каждой базы данных:
SELECT datconnlimit FROM pg_database
Уровень 3 За роль
можно выбрать и установить ограничение роли соединения на "пользователь":
SELECT rolconnlimit FROM pg_roles
Мои вопросы
Если max_connections в postgresql.conf равно 100, будет ли максимальное соединение всех баз данных независимо от настроек базы данных и роли? У меня 100 баз данных могут иметь только 1 соединение одновременно?
Где лучше всего ограничивать максимальные соединения. На уровне базы данных или на уровне ролей?
Что-нибудь еще нужно учитывать?
TIA для любых советов или подсказок!
1) ясно [из документации] (https://www.postgresql.org/docs/current/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS) (абсолютный предел весь сервер). А остальное зависит от вашего варианта использования. – dhke
dhke: «И все остальное зависит от вашего прецедента». Зависит от чего? Любой намек? – sibert
Есть ли на самом деле несколько пользователей БД? (например, большое веб-приложение с одним пользователем БД). У вас есть несколько баз данных? Используются ли эти базы данных разными пользователями? В общем случае с одним пользователем, одиночная БД, 'max_connections',' datconnlimit' и 'rolconnlimit' - все те же, что и самый низкий. – dhke