2010-03-02 24 views
19

yo oí la agrupación de conexiones plazo y buscado por algunas referencias googling ... Pero no se puede tener la idea de cuándo usarlo ....¿Qué es realmente la agrupación de conexiones?

  • ¿Cuándo debería considerar el uso de la agrupación de conexión ?

  • ¿Cuáles son las ventajas y desventajas de de la agrupación de conexiones?

Cualquier sugerencia ....

+0

¿Qué plataforma? .¿RED? ¿Java? –

+9

@John: Esta pregunta es bastante independiente del idioma. Pregunta sobre el concepto de agrupación de conexiones, no sobre una implementación específica. –

+0

@William: ¿conoces el OP, o eres un mindreader? Quería que el OP nos dijera qué plataforma tenía en mente, ya que habla de "usarla". –

Respuesta

19

La idea es que no se pueden abrir y cerrar una única conexión a la base de datos, en lugar de crear un "pool" de conexiones abiertas y luego volver a utilizarlos. Una vez que se realiza un único subproceso o procedimiento, vuelve a poner la conexión en el grupo y para que esté disponible para otros subprocesos. La idea detrás de esto es que normalmente no tienes más de unas 50 conexiones paralelas y que abrir una conexión requiere mucho tiempo y recursos.

+2

No tiene que ser específicamente para las bases de datos. La agrupación de conexiones puede ser útil para cualquier cosa que requiera una conexión que no necesita cerrarse al finalizar una solicitud. – jrista

+0

Es cierto que lo mismo se aplica a los recursos en los que abrir una conexión lleva mucho tiempo. – naivists

0

la agrupación de conexiones permite la reutilización de una conexión de base de datos existente, pero no utilizada. al usarlo, elimina la sobrecarga de la conexión/desconexión al servidor de la base de datos. proporciona un impulso de rendimiento significativo en la mayoría de los casos. La única razón por la que puedo pensar en no usarlo es si su software no se conectará con la frecuencia suficiente para mantener las conexiones con vida o si hay algún error en la capa de agrupamiento.

5

Debe usar la agrupación de conexiones siempre que el tiempo para establecer una conexión sea mayor que cero (casi siempre) y cuando haya un uso promedio suficiente como para que la conexión se vuelva a utilizar antes de que se agote.

Las ventajas son que es mucho más rápido abrir/cerrar nuevas conexiones, ya que no están realmente abiertas y cerradas, simplemente se registran en una piscina.

La desventaja sería que en algunas agrupaciones de conexiones se producirá un error si todas las conexiones agrupadas están en uso. Esto generalmente es algo bueno ya que indica un problema con el código de llamada que no cierra las conexiones, pero si legítimamente necesita más conexiones que las que están en el grupo y no las ha configurado correctamente, podría obtener errores que de otro modo no lo haría.

Y, por supuesto, habrá otros pros y contras según el entorno específico en el que esté trabajando y la base de datos.

+0

¿No obtengo un "uso promedio de modo que la conexión pueda volver a usarse antes de que se agote"? Los grupos de conexiones generalmente validan conexiones que se sirven al cliente y las vuelven a crear de forma transparente si exceden el tiempo de espera. – ewernli

+1

@ewernli, si tiene un grupo de conexiones con una aplicación de muy bajo consumo, de modo que solo se necesita una conexión cada 10 minutos, pero se agota después de 5 minutos, nunca será realmente necesario el conjunto de conexiones, ya que las conexiones generalmente ser tiempo de espera Este no es un escenario común, pero puede aparecer ocasionalmente. –

0

En .NET, si está utilizando la misma cadena de conexión para acceso a datos, entonces ya tiene la agrupación de conexiones. El concepto es reutilizar una conexión inactiva sin tener que derribarla & recrearla, ahorrando así los recursos del servidor. Esto, por supuesto, tiene en cuenta que está cerrando las conexiones abiertas al finalizar su trabajo.

5

¿Cuándo debería considerar el uso de la agrupación de conexiones ?

  • Siempre para el sistema de producción.

¿Cuáles son las ventajas y desventajas de la agrupación de conexiones?

Ventajas:

  • Rendimiento. Use un grupo fijo de conexión y evite la costosa creación y liberación de conexiones.
  • Infraestructura compartida. Si su base de datos se comparte entre varias aplicaciones, no desea que una aplicación agote todas las conexiones. La agrupación ayuda a limitar el número de conexiones por aplicación.
  • Licencias. Según la licencia de su base de datos, el número de clientes simultáneos es limitado. Puede establecer un grupo con la cantidad de conexiones autorizadas. Si no hay conexión disponible, el cliente espera hasta que esté disponible o se agota el tiempo de espera.
  • Problema de conectividad. El grupo de conexiones que se encuentra entre el cliente y la base de datos puede proporcionar funciones prácticas como prueba de "ping", reintento de conexión, etc. de forma transparente para el cliente. En el peor de los casos, hay un tiempo de espera.
  • Monitoreo. Puede supervisar la piscina, ver el número de conexiones activas, etc.

Desventaja:

  • Es necesario configurarlo y configurarlo, que es realmente cacahuetes normalmente.
+0

FYI, la agrupación de conexiones está activada de manera predeterminada en ADO.NET; prácticamente tiene que hacer todo lo posible para evitarlo. Si usa un nombre de usuario diferente para cada conexión, por ejemplo, no habrá agrupamiento. En el caso de .NET, no hay una administración de grupo explícita, ni un límite para la cantidad de conexiones por aplicación, ya que el grupo es por aplicación. –

+0

Creo que @ewernli tiene las ventajas, y usted tiene un punto con las credenciales, pero, en muchos casos, el usuario de la base de datos no tiene relevancia porque no se usa más que para autenticar la aplicación con la base de datos, no directamente el usuario con la base de datos, la aplicación se encarga de autenticar al usuario que usa la base de datos para hacerlo. En ese caso, @ewernli tiene totalmente el punto. –

Cuestiones relacionadas