Performanceverlust bei Datenbankzugriff
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anbetracht
anfang
ausgehen
ausgelesen verbindung
beendet verbindung
beginn
datenbank
einzige verbindung
falsche richtung
greifen
nutz
performance
server
sorgen
statement
team
verbindung
zaubern
zeitverlust
zugriff
-
Hallo zusammen,
ich sitze da so da und überlege mir wie ich aus meinem PHP Script auf die Datenbank zu greifen werde. Da fällt mir ein, dass ich mal gelesen habe, dass man bei jedem Zugriff eine neue Verbindung aufbauen und danach wieder schließen soll.
Kann mir Jemand den Unterschied [vorallem in anbetracht der Zeit] zwischen den zwei folgenden Abläufen erklären?
Bei welcher Methode habe ich mehr Zeitverlust.
1.
<?PHP
//Verbindung zur DB wird aufgebaut
...
//etwas wird aus der DB ausgelesen
...
//etwas wird in die DB eingefügt
...
//etwas wird aus der DB ausgelesen
...
//etwas wird in die DB eingefügt
//Verbindung zur DB wird beendet
?>
2.
<?PHP
//Verbindung zur DB wird aufgebaut
//etwas wird aus der DB ausgelesen
//Verbindung zur DB wird beendet
...
//Verbindung zur DB wird aufgebaut
//etwas wird in die DB eingefügt
//Verbindung zur DB wird beendet
...
//Verbindung zur DB wird aufgebaut
//etwas wird aus der DB ausgelesen
//Verbindung zur DB wird beendet
...
//Verbindung zur DB wird aufgebaut
//etwas wird in die DB eingefügt
//Verbindung zur DB wird beendet
?> -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich denke mal, dass du davon ausgehen kannst, dass es auf jeden Fall zeitaufwendiger sein wird, für jede Query eine neue Verbindung aufzubauen.
Davon abgesehen wüsste ich nicht, was dagegen spricht immer dieselbe Verbindung zu benutzen, insofern du nicht mehrere Datenbanken benutzt.
Gruß
styVe (qap2-Team) -
Stelle am Anfang deines Scripts eine Verbindung her und nutze sie die ganze Zeit, das ist schneller. Wenn du PDO benutzt, kannst du sogar über PDO::ATTR_PERSISTENT eine persistente Verbindung erstellen, d.h. sie wird nach Beenden deines Scripts weiterhin gecacht.
Wenn du viele ähnliche Queries ausführst (und PDO benutzt) kannst du mit Prepared Statements auch noch Geschwindigkeit rausholen.
Aber ansonsten, mach dir um Performance mal keine Sorgen. Oder wenn du Performanceprobleme wirklich hast, dann seh zu, dass deine Datenbank normalisiert bist und deine Queries performant sind. Da wirst du viel mehr Performance bekommen, also auf PHP-Ebene zu zaubern ;) -
@qap2
..., insofern du nicht mehrere Datenbanken benutzt.
du brauchst für mehrere (beliebig viele) datenbanken nicht mehr als eine einzige verbindung! die verbindung ist nämlich nicht für die datenbank(en), sondern für den datenbank-server zuständig. und der ist bei LC immer nur ein server. -
@czibere
... ... ...
... ja ne echt?
@eisfeld
Benutze einfach eine einzige Verbindung, die du ganz zu Beginn deines Scriptes aufbaust. Performance-technisch wird alles andere eher in die falsche Richtung führen. :-)
Gruß
styVe (qap2-Team) -
Am Anfang deines Scripts öffnest du deine Verbindung. Nachdem das Script abgearbeitet wurde schliesst sich die Verbindung automatisch. Somit ist ein $db->close() hinfällig. Natürlich musst du sie auf deiner nächsten Seite wieder öffnen.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage