Con el fin de evitar la sobrecarga de establecer una nueva conexión cada vez que necesita un consulta disparados contra MySQL, hay dos opciones disponibles:MySQL - Conexión persistente frente a la agrupación de conexiones
- Las conexiones persistentes, por lo que una nueva conexión es solicitó que se realice un control para ver si ya hay una conexión "idéntica" abierta y, de ser así, úselo.
- agrupación de conexiones, mediante la cual el cliente mantiene un conjunto de conexiones, de modo que cada subproceso que necesite utilizar una conexión lo extraiga del grupo y lo devuelva al grupo cuando finalice.
Entonces, si tengo una aplicación de servidor multiproceso esperada para manejar miles de solicitudes por segundo, y cada subproceso tiene que desencadenar una consulta contra la base de datos, ¿cuál es la mejor opción?
Según entiendo, con las conexiones persistentes, todos los hilos en mi aplicación intentarán y usarán la misma conexión persistente a la base de datos porque todos están usando conexiones idénticas. Por lo tanto, se trata de una conexión compartida entre varios subprocesos de aplicaciones, por lo que las solicitudes se bloquearán pronto en el lado de la base de datos.
Si utilizo un mecanismo de agrupación de conexiones, tendré todos los subprocesos de aplicaciones compartiendo un conjunto de conexiones. Entonces hay menos posibilidades de una solicitud de bloqueo. Sin embargo, con la agrupación de conexiones, ¿debe esperar una aplicación para adquirir una conexión desde el grupo o debe enviar una solicitud sobre las conexiones en el grupo de todos modos en forma de turnos rotativos, y dejar que la cola, en su caso, suceda en la base de datos?
En caso de agrupamiento de conexiones, el desarrollador de la aplicación puede controlar cuándo y cuántas conexiones abrir/cerrar. Para MySQL, ¿cómo se puede controlar el número de conexiones persistentes "idénticas"? ¿Hay algún parámetro de configuración del servidor para el mismo? – user1259642
En las piscinas que utilizo, establece el tamaño mínimo y máximo de la agrupación y define un tiempo de inactividad después del cual se cierra una conexión (más algunas otras cosas). – mrab