Módulo 08 · Bases de datos con database/sql — Lección 3 de 3 · ~11 min
Patrón repositorio y pooling
*sql.DB es un pool, no una conexión
Una idea le cambia la forma a cómo usas database/sql: un sql.DB no es una sola conexión — es un pool de conexiones que Go administra por ti. Es seguro compartirlo entre goroutines, así que lo abres una vez al arrancar y le entregas el mismo sql.DB a todo lo que toque la base de datos.
No abres un *sql.DB nuevo por petición. Cada Query/Exec toma prestada una conexión del pool, la usa, y la devuelve. Eso es lo que le permite a un solo servidor Go manejar miles de peticiones concurrentes contra un puñado de conexiones reales a la base de datos.