Sobes.tech
Back to questions
Intern
13

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

Companies where asked
Adapty

Answer from AI

sobes.tech AI

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

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

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

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

import "database/sql"

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