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

mysql_connect VS mysql_pconnect


Conexões persistentes devem ser desnecessárias para o MySQL. Em outros bancos de dados (como Oracle), fazer uma conexão é caro e demorado, portanto, se você puder reutilizar uma conexão, será uma grande vitória. Mas essas marcas de banco de dados oferecem pool de conexão, o que resolve o problema de uma maneira melhor.

Fazer uma conexão com um banco de dados MySQL é rápido em comparação com essas outras marcas, portanto, o uso de conexões persistentes oferece proporcionalmente menos benefícios para o MySQL do que para outra marca de banco de dados.

Conexões persistentes também têm uma desvantagem. O servidor de banco de dados aloca recursos para cada conexão, sejam elas necessárias ou não. Então você vê muitos recursos desperdiçados sem propósito se as conexões estiverem ociosas. Não sei se você chegará a 10.000 conexões ociosas, mas mesmo algumas centenas são caras.

As conexões têm estado e seria inapropriado para uma solicitação PHP "herdar" informações de uma sessão usada anteriormente por outra solicitação PHP. Por exemplo, tabelas temporárias e variáveis ​​de usuário normalmente são limpas quando uma conexão é fechada, mas não se você usar conexões persistentes. Da mesma forma, configurações baseadas em sessão, como conjunto de caracteres e agrupamento. Além disso, LAST_INSERT_ID() reportaria o último id gerado durante a sessão -- mesmo que fosse durante uma requisição PHP anterior.

Pelo menos para o MySQL, a desvantagem das conexões persistentes provavelmente supera seus benefícios. E há outras técnicas melhores para alcançar alta escalabilidade.

Atualização de março de 2014:

A velocidade de conexão do MySQL sempre foi baixa em comparação com outras marcas de RDBMS, mas está ficando ainda melhor.

Veja http://mysqlserverteam.com/improving-connectdisconnect-performance/

Leia o blog para mais detalhes e comparações de velocidade.