Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - conexão persistente vs pool de conexão


Ter conexões persistentes não implica que todas as threads usem a mesma conexão. Ele apenas "diz" que você mantém a conexão aberta (em contradição em abrir uma conexão sempre que precisar). Abrir uma conexão é uma operação cara, então - em geral - você tenta evitar abrir conexões com mais frequência do que o necessário.

Esta é a razão pela qual os aplicativos multithread geralmente usam pools de conexão. O pool cuida de abrir e fechar conexões e cada thread que precisa de uma conexão solicita uma do pool. É importante cuidar para que a thread retorne a conexão o mais rápido possível ao pool, para que outra thread possa utilizá-la.

Se seu aplicativo tiver apenas alguns threads de execução longa que precisam de conexões, você também poderá abrir uma conexão para cada thread e mantê-la aberta.

Usar apenas uma conexão (como você a descreveu) é igual a um pool de conexões com o tamanho máximo um. Isso será mais cedo ou mais tarde seu gargalo, pois todos os threads terão que esperar pela conexão. Esta pode ser uma opção para serializar as operações do banco de dados (realizá-las em uma determinada ordem), embora existam opções melhores para garantir a serialização.