sql.Open opent niet echt een verbinding met uw database.
Een sql.DB onderhoudt een pool van verbindingen met uw database. Elke keer dat u uw database doorzoekt, zal uw programma proberen een verbinding te krijgen met deze pool of anders een nieuwe maken. Deze verbindingen worden dan terug in de pool geplaatst zodra u ze sluit.
Dit is wat rows.Close()
doet.Uw db.QueryRow("...")
doet intern hetzelfde als u Scan(...)
. aanroept .
Het basisprobleem is dat je te veel queries maakt, waarvan elke een connectie nodig heeft, maar je connecties niet snel genoeg sluit. Op deze manier moet uw programma voor elke zoekopdracht een nieuwe verbinding maken.
U kunt het maximale aantal verbindingen dat uw programma gebruikt beperken door SetMaxOpenConns te bellen. op uw sql.DB.
Zie http://go-database-sql.org/surprises.html voor meer informatie.