sql >> Database teknologi >  >> RDS >> Mysql

mysql_connect VS mysql_pconnect

Vedvarende forbindelser burde være unødvendige for MySQL. I andre databaser (såsom Oracle) er det dyrt og tidskrævende at oprette en forbindelse, så hvis du kan genbruge en forbindelse, er det en stor gevinst. Men disse mærker af databaser tilbyder forbindelsespooling, hvilket løser problemet på en bedre måde.

At oprette en forbindelse til en MySQL-database er hurtig sammenlignet med de andre mærker, så brug af vedvarende forbindelser giver forholdsmæssigt mindre fordele for MySQL, end det ville gøre for et andet mærke af database.

Vedvarende forbindelser har også en ulempe. Databaseserveren allokerer ressourcer til hver forbindelse, uanset om forbindelserne er nødvendige eller ej. Så du ser en masse spildte ressourcer uden formål, hvis forbindelserne er inaktive. Jeg ved ikke, om du når op på 10.000 ledige forbindelser, men selv et par hundrede er dyrt.

Forbindelser har tilstand, og det ville være upassende for en PHP-anmodning at "arve" information fra en session, der tidligere blev brugt af en anden PHP-anmodning. For eksempel bliver midlertidige tabeller og brugervariabler normalt ryddet op, når en forbindelse lukkes, men ikke hvis du bruger vedvarende forbindelser. Ligeledes sessionsbaserede indstillinger som tegnsæt og sortering. Også LAST_INSERT_ID() ville rapportere det sidst genererede id under sessionen -- selvom det var under en tidligere PHP-anmodning.

For MySQL i det mindste opvejer ulemperne ved vedvarende forbindelser sandsynligvis deres fordele. Og der er andre, bedre teknikker til at opnå høj skalerbarhed.

Opdatering marts 2014:

MySQL-forbindelseshastigheden var altid lav sammenlignet med andre mærker af RDBMS, men den bliver endnu bedre.

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

Læs bloggen for flere detaljer og hastighedssammenligninger.



  1. MySQL-forespørgsel - bruger SUM af COUNT

  2. INST_TOP (Oracle R12 INSTANCE_HOME ) afkodet

  3. Installer Oracle SQL Developer 19.1 på Mac OS med JDK 8

  4. Hvad betyder det at opdele en Microsoft Access-database?