Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/01/2012, 17:53
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 3 meses
Puntos: 2658
Respuesta: Verificar y cerrar conexiones con mysql

Cita:
Iniciado por LhaN Ver Mensaje
Una vez me dijeron: "Abri la conexion, usala y cerrala en el mismo script..."
Lo que a nivel de aprendizaje puede estar bien. Pero a nivel de desarrollo... es un espanto.

Primero, porque si la secuencia de operaciones de apertura/cierre de conexiones es muy reducida, terminarás saturando el pool de conexiones del mismo Windows, si eso usas.

En segundo lugar, porque lo pagarás con performance: Cada vez que creas una conexión usas una enorme cantidad de recursos de la PC, la red, la Web y de los servidores, todos los cuales se debe liberar al cerrarse la conexión... cosa que no siempre ocurre con la rapidez deseada. Eso hace que el abrir una conexión sea la operación de mayor costo en una consulta, y por ende, mientras más abras y cierres, peor resulta para la performance general del sistema.

En tercer lugar, un uso intenso de conexiones que se abren y cierran constantemente, provenientes todas de los mismos sitios, a nivel de seguridad de sistemas se interpreta de una sola forma: Alguien está atacando el servidor, o está siendo sometido a un uso indebido, probablemente por un software furtivo o ilícito. Ni más ni menos. En ese caso tanto los WebServers como los DBA de los hosting consideran la actividad como ilícita y te bloquean las conexiones, o te cancelan la cuenta.

En cuarto lugar, desde la optica de los DBA, no es buena política dar acceso a la base con una cantidad de conexiones sin límite, porque tu no eres el único usuario del hosting, y ellos tienen también un ancho de banda de dicado a las conexiones, que deben administrar para todos los usuarios... y no sólo para ti.

Por supuesto que existen usuarios que no quieren que les limiten la cantidad de conexiones, sea por las razones que sean (incluyendo el que tengan mucho tráfico comercial), pero para ellos los hosting tienen una solución: Servidores dedicados, por los que pagas algo más de lo que te imaginas.

En resumen, una buena práctica indica:
1) Abre una sola conexión por sesión.
2) Verifica el estado de la conexión antes de hacer las consultas.
3) Cierra las conexiones si y sólo si la sesión ha terminado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)