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

Agrupamento de conexões vs conexão persistente mysqli


Na verdade, termos pooling de conexões e conexão persistente consulte a mesma coisa no caso de mysqli em PHP.

Conexão persistente neste caso, refere-se à conexão MySQL aberta a partir do script PHP que permanece aberta após a execução do script, para ser usada novamente em algumas execuções posteriores.

Agrupamento de conexões significa que existe um conjunto de conexões persistentes mantidas pelo PHP. Uma conexão ociosa deste pool é fornecida ao script PHP que deseja se conectar ao MySQL e retorna ao pool quando o script termina.

Você pode se perguntar por que precisamos do conjunto de conexões MySQL, por que não usamos apenas uma conexão persistente para todos os scripts?

Há duas razões para isso:
  • O PHP cria um pool de conexões MySQL com base em host/port/username/password usado. Se um script quiser se conectar ao MySQL com algum host/port/username/password combinação, o PHP procura por conexão persistente ociosa que tenha os mesmos valores. Se não for encontrado, uma nova conexão persistente será criada com este host/port/username/password combinação. Portanto, precisamos de pelo menos tantas conexões persistentes diferentes quanto existem diferentes host/port/username/password valores usados ​​por todos os scripts.
  • Você não pode executar dois comandos SQL em uma conexão MySQL ao mesmo tempo. Isso pode acontecer quando dois scripts PHP estão sendo executados simultaneamente. Quando dois scripts desejam se comunicar com o MySQL ao mesmo tempo, duas conexões MySQL persistentes são criadas. O número de conexões persistentes no pool é igual ao último número máximo de scripts PHP paralelos executados ou igual ao limite superior definido em php.ini .

Aviso importante:

Pools de conexão MySQL (e quaisquer outros pools de conexão) podem existir somente se o PHP estiver sendo executado como um plugin de servidor web . Os pools não funcionam quando estão funcionando no modo fast-cgi ou de qualquer outra forma quando o executável do PHP termina após a execução do script.

Edit:O pool de conexões MySQL pode ser usado no modo fast-cgi do PHP se o servidor web estiver configurado para reutilizar um processo PHP fast-cgi para várias solicitações. Se o processo PHP fast-cgi estiver configurado para sair após atender a uma solicitação, todas as suas conexões MySQL serão fechadas.