2011-03-04 7 views
5

Recientemente encontré una cadena de conexión creada automáticamente que especificaba "Pooling = False" y me pregunté por qué estaba configurado así. Desde mi punto de vista, la agrupación es virtualmente siempre ventajosa, siempre que no esté mal configurada.¿Razones para no usar la agrupación de conexiones de base de datos?

¿Hay alguna razón para deshabilitar la agrupación? ¿Depende del sistema operativo, la conexión física o el DBMS utilizado?

Respuesta

2

Si se trata de una aplicación con una sola hebra, la agrupación parece innecesaria. ¿Estaba en un dispositivo con recursos limitados? ¿El tiempo de inicio es importante para la aplicación? Estos son algunos factores que pueden llevar a la decisión de desactivar la agrupación.

En general, creo que tiene razón en que la puesta en común es beneficiosa. Si es una aplicación web típica, entonces preguntaría al respecto.

+0

Acerca del tiempo de inicio: no estoy seguro, pero pensé que el grupo de conexiones se iniciará vacío (es decir, muy rápido) y se completará más tarde según sea necesario. – mafu

+0

Las agrupaciones a menudo se configuran con conexiones mínimas/máx .: si min> 0, esas generalmente se crean al inicio. –

3

Sí, hay un motivo para deshabilitar la agrupación. Debe comprobar cómo una biblioteca de agrupación concreta se enfrenta a las desconexiones de red temporales. Por ejemplo, algunos controladores de base de datos y/o bibliotecas de grupo no hacen nada si se pierde la conexión pero el objeto de conexión aún está activo. En lugar de reaparecer una nueva conexión, el grupo le dará conexiones obsoletas y obtendrá errores. Algunas implementaciones de grupo verifican si la conexión está activa emitiendo algún comando rápido al servidor antes de servir la conexión a la aplicación. Si obtienen un error, matan esa conexión y generan una nueva. Siempre debe probar la biblioteca de su grupo contra dicha situación antes de habilitar la agrupación.

2

La razón debe ser que su contexto está tratando de cambiar el estado de la base de datos subyacente; por ejemplo, si está haciendo algo que afecta a TLS (Transport Layer Security) no debería usar Connection pool, porque LDAP no rastrea cambios de estado, si lo hace, está comprometiendo sus problemas de seguridad.

Cuestiones relacionadas