Piense en ello como asientos en un autobús.
Al abrir conexiones, usted llena esos asientos; eventualmente, el autobús está lleno y ya no puede aceptar pasajeros (o abre más conexiones a la base de datos). Cada vez que el autobús tiene que rechazar a un pasajero porque está a capacidad, ese pasajero tiene que esperar a que llegue otro autobús.
Al cerrar sus conexiones cuando haya terminado con ellas, libera espacio para más conexiones, lo que significa que más programas que necesitan interactuar con la base de datos pueden hacer lo que necesitan, sin tener que esperar conexiones para liberar. No cerrar sus conexiones significa que la base de datos necesita saber qué hacer con todas las conexiones, lo que puede causar problemas si su base de datos no cierra las conexiones tan pronto como está abriendo nuevas.
Esto cambia cuando utiliza un grupo de conexiones (consulte los comentarios a continuación); en esas situaciones, querrás que tu grupo maneje las conexiones de apertura y cierre por ti. Si no estás agrupando tus conexiones, mantenerlas abiertas más de lo necesario es desperdiciar recursos.
No habría ningún daño en el uso a pequeña escala, pero algunos DB se licencian por conexión, por lo que mantener las conexiones abiertas durante períodos prolongados priva a los demás de acceso. –
¿Por qué el -1? Pensé que era una pregunta bastante útil – TimeToCodeTheRoad