Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql_connect VS mysql_pconnect

Persistente Verbindungen sollten für MySQL unnötig sein. Bei anderen Datenbanken (z. B. Oracle) ist das Herstellen einer Verbindung teuer und zeitaufwändig. Wenn Sie also eine Verbindung wiederverwenden können, ist dies ein großer Gewinn. Aber diese Marken von Datenbanken bieten Verbindungspooling, was das Problem besser löst.

Das Herstellen einer Verbindung zu einer MySQL-Datenbank ist im Vergleich zu diesen anderen Marken schnell, sodass die Verwendung dauerhafter Verbindungen für MySQL proportional weniger Vorteile bringt als für eine andere Datenbankmarke.

Dauerhafte Verbindungen haben auch einen Nachteil. Der Datenbankserver weist jeder Verbindung Ressourcen zu, unabhängig davon, ob die Verbindungen benötigt werden oder nicht. Sie sehen also eine Menge verschwendeter Ressourcen ohne Zweck, wenn die Verbindungen im Leerlauf sind. Ich weiß nicht, ob Sie 10.000 ungenutzte Verbindungen erreichen, aber selbst ein paar Hundert sind kostspielig.

Verbindungen haben einen Status, und es wäre für eine PHP-Anforderung unangemessen, Informationen von einer Sitzung zu „erben“, die zuvor von einer anderen PHP-Anforderung verwendet wurde. Zum Beispiel werden temporäre Tabellen und Benutzervariablen normalerweise bereinigt, wenn eine Verbindung geschlossen wird, aber nicht, wenn Sie dauerhafte Verbindungen verwenden. Ebenso sitzungsbasierte Einstellungen wie Zeichensatz und Sortierung. Auch LAST_INSERT_ID() würde die zuletzt während der Sitzung generierte ID melden – selbst wenn dies während einer früheren PHP-Anfrage war.

Zumindest für MySQL überwiegen wahrscheinlich die Nachteile dauerhafter Verbindungen ihre Vorteile. Und es gibt andere, bessere Techniken, um eine hohe Skalierbarkeit zu erreichen.

Aktualisierung März 2014:

Die MySQL-Verbindungsgeschwindigkeit war im Vergleich zu anderen RDBMS-Marken immer niedrig, aber sie wird sogar noch besser.

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

Lesen Sie den Blog für weitere Details und Geschwindigkeitsvergleiche.