Что такое connection pool в пакете database/sql? Как он работает?

Connection pool в пакете database/sql — это механизм управления набором открытых соединений с базой данных, которые переиспользуются для выполнения запросов.

Короткий ответ

Что ответить на собеседовании

Connection pool в пакете database/sql — это механизм управления набором открытых соединений с базой данных, которые переиспользуются для выполнения запросов. Вместо открытия и закрытия соединения при каждом запросе, пул поддерживает несколько активных соединений, что значительно повышает производительность и снижает нагрузку на базу.

Подробный разбор

Ответ с пояснениями

Connection pool в пакете database/sql — это механизм управления набором открытых соединений с базой данных, которые переиспользуются для выполнения запросов. Вместо открытия и закрытия соединения при каждом запросе, пул поддерживает несколько активных соединений, что значительно повышает производительность и снижает нагрузку на базу.

Как это работает:

  • При первом запросе создаётся новое соединение и помещается в пул.
  • Следующие запросы берут свободное соединение из пула.
  • Если все соединения заняты, запрос ждёт освобождения или создаётся новое соединение, если не достигнут лимит.
  • После использования соединение возвращается в пул для повторного использования.

Пример настройки пула в Go:

import "database/sql"

// db — *sql.DB
// Устанавливаем максимальное количество открытых соединений
 db.SetMaxOpenConns(10)
// Устанавливаем максимальное количество свободных соединений
 db.SetMaxIdleConns(5)

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее