2012-07-25 19 views
9

Estaba en una reunión con algunos desarrolladores de software, y me recomendaron cerrar las conexiones a la base de datos lo antes posible en el código de mi aplicación. ¿Puede alguien decirme cuál es el daño de mantener abierta una conexión en una aplicación?¿Es costoso mantener abiertas las conexiones a la base de datos?

estaba leyendo los datos de una sola tabla de una base de datos

+0

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. –

+0

¿Por qué el -1? Pensé que era una pregunta bastante útil – TimeToCodeTheRoad

Respuesta

8

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.

+4

Esta no es toda la verdad. Cuando se usa un Pooler de conexión, es mejor mantener las conexiones abiertas todo el tiempo, porque para la mayoría de los DBMS * de apertura * una conexión es bastante trabajo. –

+0

+1, ¡buena analogía! También estoy de acuerdo con @a_horse_with_no_name, ya que las conexiones pueden ser costosas de abrir. – halfer

+0

Gracias por el consejo: agregué un párrafo en la parte inferior de mi respuesta. Si necesita más ajustes, ¡házmelo saber! – girasquid

Cuestiones relacionadas