Проверяет понимание оптимизации работы с БД.
Connection pool — это набор заранее открытых соединений к базе.
Он уменьшает накладные расходы на создание соединений и ограничивает нагрузку на Postgres.
Создание нового TCP + TLS + handshake с БД — дорогая операция.
Пул соединений создаёт N готовых соединений и раздаёт их запросам.
Преимущества:
быстрее, т.к. соединение уже открыто,
предотвращает DDOS собственной базы слишком большим количеством запросов,
стабилизирует latency,
работает как очередность к БД.
В Go популярны:
database/sql (встроенный пул),
pgxpool (расширенный пул).
Настройки:
MaxOpenConns — максимальное число соединений,
MaxIdleConns — сколько можно держать простаивающими,
ConnMaxLifetime — пересоздание соединений.
Проблемы неправильной настройки:
“too many connections” в Postgres,
долгие транзакции удерживают пул,
starvation горутин.
Вывод:
Без пула Postgres-клиент невозможно использовать в продакшене.
Уровень
Рейтинг:
4
Сложность:
6
Навыки
Golang
Postgres
Ключевые слова
Подпишись на Golang Developer в телеграм