Persistente verbindingen zouden niet nodig moeten zijn voor MySQL. In andere databases (zoals Oracle) is het maken van een verbinding duur en tijdrovend, dus als u een verbinding opnieuw kunt gebruiken, is dat een grote overwinning. Maar die databasemerken bieden pooling van verbindingen aan, wat het probleem op een betere manier oplost.
Het maken van een verbinding met een MySQL-database gaat snel in vergelijking met die andere merken, dus het gebruik van permanente verbindingen biedt naar verhouding minder voordeel voor MySQL dan voor een ander merk database.
Vaste verbindingen hebben ook een keerzijde. De databaseserver wijst resources toe aan elke verbinding, of de verbindingen nu nodig zijn of niet. Je ziet dus veel verspilde bronnen voor niets als de verbindingen inactief zijn. Ik weet niet of je 10.000 inactieve verbindingen zult bereiken, maar zelfs een paar honderd is duur.
Verbindingen hebben een status en het zou ongepast zijn voor een PHP-verzoek om informatie te "erven" van een sessie die eerder werd gebruikt door een ander PHP-verzoek. Tijdelijke tabellen en gebruikersvariabelen worden bijvoorbeeld normaal gesproken opgeschoond als een verbinding wordt gesloten, maar niet als u permanente verbindingen gebruikt. Evenzo sessiegebaseerde instellingen zoals tekenset en sortering. Ook LAST_INSERT_ID()
zou de id rapporteren die het laatst tijdens de sessie is gegenereerd -- zelfs als dat tijdens een eerder PHP-verzoek was.
In ieder geval voor MySQL weegt het nadeel van aanhoudende verbindingen waarschijnlijk zwaarder dan hun voordelen. En er zijn andere, betere technieken om een hoge schaalbaarheid te bereiken.
Update maart 2014:
De MySQL-verbindingssnelheid was altijd laag in vergelijking met andere merken RDBMS, maar het wordt nog beter.
Zie http://mysqlserverteam.com/improving-connectdisconnect-performance/
Lees de blog voor meer details en snelheidsvergelijkingen.