Reiner: persistenten Verbindungen (MySQL)

Beitrag lesen

Hi,

es macht doch keinen Unterschied, ob die Datenbank auf dem selben Server ist, oder?
Wenn die Datenbank nicht auf derselben Maschine läuft wie der Webserver, dann findet die Kommunikation zwischen Datenbank-Client und Server nicht mehr über schnelle Kommunikationsmethoden wie shared memory oder UNIX Domain Sockets statt, sondern über eine TCP/IP-Verbindung, die eine wesentlich geringere Kapazität und wesentlich höhere Latenzzeiten hat. Dies hat besonders fatale Auswirkungen, wenn die Datenbank und der Webserver durch ein langsames Netzwerk getrennt sind (Umlaufzeiten für Pakete von 10ms und mehr) oder wenn die Netzwerkbandbreite eingeschränkt ist (8 KB/sec und weniger).

Ich meinte, daß es ja keinen Unterschied macht bzgl. ob man immer wieder neue Verbindungen aufmacht oder nicht in Abhängigkeit von der Maschine. Der Unterschied ist dann höchstens, ob Dir die Verbindung abschmiert, oder?

Ich glaube nicht, daß es da Unterschiede gibt.
Wenn Du Dein Auto reparierst und 100mal in den Keller mußt, um Werkzeug usw. zu holen, nervt es Dich spätestens beim 3. Mal, wenn Du den Keller immer wieder abschließt und den Schlüssel suchen mußt.
Wenn Du aber nicht damit gerechnet hattest, nochmal was holen zu müssen, war das Abschließen in Ordnung...
Einigen Datenbanken, wie z. B. MySQL, macht es nichts aus, Datenbanklinks zu öffnen und wieder zu schließen. Andere Datenbanken, wie z. B. Oracle, starten bei jedem Connect einen eigenen Clientprozess. Dies ist ein sehr aufwendiger Vorgang.

Ja, aber ich denke, daß die Grundsätze gleich sind.

Für eine persistente Verbindung brauchst Du doch sicher ein Programm, was im Hintergrund läuft und Dein eigentliches Programm mit Daten versorgt. Das ist - denke ich - schon aufwändig.
Bei normalen Webanwendungen macht das keinen Sinn.
Aber innerhalb eines Scriptes sollte man natürlich nicht bei jeder Abfrage die Verbindung neu aufbauen, denn das kostet sicher enorm Zeit.

für eine persistente Verbindung brauche ich nichts anderes als mysql_pconnect() !

ist nicht böse gemeint Reiner, aber mir kommst so vor als verstündest du nicht von dem was du da schreibst.

Bzgl. Php hast Du Recht. Ich wußte bisher nicht, wie mysql_pconnect funktioniert.

Gruß
Reiner