Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mejor desconectar de la BD o no despues de una conexion?

Estas en el tema de Mejor desconectar de la BD o no despues de una conexion? en el foro de Mysql en Foros del Web. Buenos días, Hablando con un amigo, nos ha salido una pequeña discusión. Y queremos saber vuestra opinión. En una página web (php), diseñada para que ...
  #1 (permalink)  
Antiguo 22/09/2008, 00:17
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Mejor desconectar de la BD o no despues de una conexion?

Buenos días,

Hablando con un amigo, nos ha salido una pequeña discusión. Y queremos saber vuestra opinión.

En una página web (php), diseñada para que los usuarios se registren, y puedan consultar millones de datos, que continuamente estan actualizando su perfil... etc,

Cual es la mejor opción, tener un usuario de BD que hace todas las peticiones a la BD y despues de cada una se desconecta o montarlo de otra manera?

Cual es la forma correcta? hablo de mysql y no se si existe un "pol de conexiones"

Gracias por adelantado.
  #2 (permalink)  
Antiguo 22/09/2008, 00:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 21
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

No se si entendi bien lo que estas preguntando pero...
El que se este actualizando la informacion de tu base de datos es independiente de la forma en la que armes el codigo, lo recomendable es que siempre cierres tu conexion a mySQL despues de cada query que hagas para evitar saturar en caso de que sea una sitio que va a soportar muchos usuarios pero no requieres como tal un "usuario" para accesar a tus base de datos

saludos
  #3 (permalink)  
Antiguo 22/09/2008, 00:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Hasta donde tengo entendido las conexiones se cierran al finalizar el script.

A menos que sean conexiones persistentes.

Aunque si el script tarda mucho en cargar, es mejor desconectar despues de haber hecho todos los queries.
Recuerda que hay un limite de conexiones simultaneas para MySQL (Aunque lo puedes cambiar).

Última edición por Ronruby; 22/09/2008 a las 00:36
  #4 (permalink)  
Antiguo 22/09/2008, 00:33
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Cita:
Iniciado por ghesent Ver Mensaje
No se si entendi bien lo que estas preguntando pero...
El que se este actualizando la informacion de tu base de datos es independiente de la forma en la que armes el codigo, lo recomendable es que siempre cierres tu conexion a mySQL despues de cada query que hagas para evitar saturar en caso de que sea una sitio que va a soportar muchos usuarios pero no requieres como tal un "usuario" para accesar a tus base de datos

saludos
NO. Iniciar una conexión es un proceso lento, a veces más que un pequeño SELECT. Sería inutil que un script que haga 10 queries se desconecte y reconecte por cada una.

Lo que si te creo es que después de algunos queries, se cierre una transacción.
__________________
Blog | Tecnosquad
  #5 (permalink)  
Antiguo 22/09/2008, 11:05
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Cita:
Iniciado por ArrauKano Ver Mensaje
NO. Iniciar una conexión es un proceso lento, a veces más que un pequeño SELECT. Sería inutil que un script que haga 10 queries se desconecte y reconecte por cada una.

Lo que si te creo es que después de algunos queries, se cierre una transacción.
A eso me refiero... que he oido de todo tipo...

Imagina que es una web donde se muestran resultados de partidos según el filtro que utilices. Mostrar clasificaciones, etc...

Las queries son muchas, pero cada usuario puede hacer una y si hay 10.000 usuarios pueden hacer 10.000 queries a la vez. Eso por un lado.

Por otro, si un usuario mira la clasi del año anterior, luego la actual y luego filtra por partidos en casa, hace 3 queries. Pero ahi no sabes cuando ha terminado para cerrar la conexión despues de 3 queries pq son independientes (no se si me explico).

No se cual es la mejor manera, para reducir tiempo en la página y para no saturar mi server mysql.

Gracias
  #6 (permalink)  
Antiguo 22/09/2008, 11:22
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Información Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Una de las mejores formas de conseguir velocidad y no saturar la base de datos es cachear las consultas mas frecuentes.

En relación a las otras cosas que hablais depende de muchas variables. Carácteristicas del servidor, configuración de la base de datos, privilegios en la bbdd, formulación de las consultas, cantidad de usuarios, etc, etc...

Saludos!!
  #7 (permalink)  
Antiguo 22/09/2008, 14:09
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Cita:
Iniciado por Synkronice Ver Mensaje
Una de las mejores formas de conseguir velocidad y no saturar la base de datos es cachear las consultas mas frecuentes.

En relación a las otras cosas que hablais depende de muchas variables. Carácteristicas del servidor, configuración de la base de datos, privilegios en la bbdd, formulación de las consultas, cantidad de usuarios, etc, etc...

Saludos!!
Voy a poner un ejemplo gráfico. Partimos de esta página.
http://es.soccerway.com/

Como crees que hacen las consultas? tienen un solo usuario a la base de datos? cerrarias la conexión tras cada consulta que haga el navegante web?

Me gustaría que os pusieráis en que fueséis los administradores de esa página. Cómo haríais la administración a la BD...

Gracias
  #8 (permalink)  
Antiguo 22/09/2008, 14:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Cita:
Iniciado por neodani Ver Mensaje
Voy a poner un ejemplo gráfico. Partimos de esta página.
http://es.soccerway.com/

Como crees que hacen las consultas? tienen un solo usuario a la base de datos? cerrarias la conexión tras cada consulta que haga el navegante web?

Me gustaría que os pusieráis en que fueséis los administradores de esa página. Cómo haríais la administración a la BD...

Gracias
Eso depende del conocimiento que tenga el webmaster para el modelado de datos, y las estructuras de las base de datos.

Cita:
NO. Iniciar una conexión es un proceso lento, a veces más que un pequeño SELECT. Sería inutil que un script que haga 10 queries se desconecte y reconecte por cada una.
No del todo. Depende de el numero de registros que tengas en tu base de datos.
Hice unas cuantas pruebas.

0.000412940979004 segundos <-- Tiempo que toma en conectarse
0.000257968902588 segundos <-- Tiempo que toma en hacer un SELECT * FROM tbl_name (Hay que tomar en cuenta que esta tabla solo tiene 4 registros).

Si la tabla fuera de mayor volumen, no tomaria MAS tiempo que un Query.
A menos que hagas un Query tomando 1 solo registro con WHERE.

Con lo que si estoy deacuerdo es con abrir la conexion 1 vez, y cerrar la conexion luego de que todas las queries fueron ejecutadas. No ir conectado, query, desconectando...

Última edición por Ronruby; 22/09/2008 a las 14:37
  #9 (permalink)  
Antiguo 22/09/2008, 15:27
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Cita:
Iniciado por Ronruby Ver Mensaje
Eso depende del conocimiento que tenga el webmaster para el modelado de datos, y las estructuras de las base de datos.



No del todo. Depende de el numero de registros que tengas en tu base de datos.
Hice unas cuantas pruebas.

0.000412940979004 segundos <-- Tiempo que toma en conectarse
0.000257968902588 segundos <-- Tiempo que toma en hacer un SELECT * FROM tbl_name (Hay que tomar en cuenta que esta tabla solo tiene 4 registros).

Si la tabla fuera de mayor volumen, no tomaria MAS tiempo que un Query.
A menos que hagas un Query tomando 1 solo registro con WHERE.

Con lo que si estoy deacuerdo es con abrir la conexion 1 vez, y cerrar la conexion luego de que todas las queries fueron ejecutadas. No ir conectado, query, desconectando...
Pero sigue mi duda inicial xD

Si un usuario para mostrar su resultado hace 5 queries estamos de acuerdo que hasta que no finaliza todas no se cierra la conexión.
Pero en el caso que cada vez que el usuario quiere ver una clasificacion distinta es una query que se tiene que abrir y cerrar cada vez no?!

He entendido bien?

Gracias
  #10 (permalink)  
Antiguo 23/09/2008, 15:09
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Es muy difícil que en 1 script "grandote" hagamos solo un query.

Además recuerda que la ejecución de cada conexión, se efectúa por cada vez que se inicia el script y se cierra (usualmente) al terminar la ejecución y mandar las salidas. Es decir, CADA VEZ que recargas la página, estas volviendo a abrir una conexión, haciendo consultas y cerrándola al final.

Lo que es irrisorio, es abrir y cerrar conexiones durante el flujo de 1 script, por ejemplo en una sola recarga, abrir conexión/hacer query/cerrar conexión, 10 veces. Tanto el proceso de abrir como cerrar la conexión son un proceso costoso en tiempo de ejecución (probablemente también de memoria), por lo tanto es una estupidez hacerlo.

En este caso, lo que si ocurrirá es que si entran 5 personas a la vez, se abriran 5 conexiones, y cada cual hará 10 querys, es decir, 50 queries simultáneos.

Debido a esto, es que existen 2 ayudas en los motores de base de datos:

1) conexiones persistentes (nunca he trabajado con ellas, así que no se más), el concepto es que cada ejecución de un script reutilice la misma conexión.

2) transacciones: Como te aseguras
__________________
Blog | Tecnosquad
  #11 (permalink)  
Antiguo 23/09/2008, 15:11
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Es muy difícil que en 1 script "grandote" hagamos solo un query.

Además recuerda que la ejecución de cada conexión, se efectúa por cada vez que se inicia el script y se cierra (usualmente) al terminar la ejecución y mandar las salidas. Es decir, CADA VEZ que recargas la página, estas volviendo a abrir una conexión, haciendo consultas y cerrándola al final.

Lo que es irrisorio, es abrir y cerrar conexiones durante el flujo de 1 script, por ejemplo en una sola recarga, abrir conexión/hacer query/cerrar conexión, 10 veces. Tanto el proceso de abrir como cerrar la conexión son un proceso costoso en tiempo de ejecución (probablemente también de memoria), por lo tanto es una estupidez hacerlo.

En este caso, lo que si ocurrirá es que si entran 5 personas a la vez, se abriran 5 conexiones, y cada cual hará 10 querys, es decir, 50 queries simultáneos.

Debido a esto, es que existen 2 ayudas en los motores de base de datos:

1) conexiones persistentes (nunca he trabajado con ellas, así que no se más), el concepto es que cada ejecución de un script reutilice la misma conexión.

2) Transacciones: ¿Como te aseguras que 2 usuarios que trabajan los mismos datos, no pasen a llevar los datos del otro cuando se hacen muchos queries? ¿Como te aseguras de que al ejecutar varios queries, si uno falla, el resultado no corrompa los datos o cause inconsistencias?
__________________
Blog | Tecnosquad
  #12 (permalink)  
Antiguo 23/09/2008, 15:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Tema trasladado a MySQL.

Por favor publica en los foros correctos.
  #13 (permalink)  
Antiguo 24/09/2008, 11:42
Avatar de TBS
TBS
 
Fecha de Ingreso: febrero-2007
Ubicación: Lausana
Mensajes: 69
Antigüedad: 17 años, 2 meses
Puntos: 2
Respuesta: Mejor desconectar de la BD o no despues de una conexion?

Cita:
Iniciado por neodani Ver Mensaje
Pero sigue mi duda inicial xD

Si un usuario para mostrar su resultado hace 5 queries estamos de acuerdo que hasta que no finaliza todas no se cierra la conexión.
Pero en el caso que cada vez que el usuario quiere ver una clasificacion distinta es una query que se tiene que abrir y cerrar cada vez no?!

He entendido bien?

Gracias
Yo abro una conexion cuando empieza la pagina y la cierro cuando termina... justo despues de imprimir </html>
__________________
Zend Framework + HTML5 + CSS3 + Javascript
www.dayron.ch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:35.