Marc: Geschwindigkeit Datenbank-Verbindung öffnen und schließen

Ich habe es bis jetzt so gemacht, dass ich in jede Seite eine php-Seite includiere, die meine ganzen Funktionen für mysql-Operationen enthält. Der Bequemlichkeit halber habe ich es so gemacht, dass jedesmal, wenn z.B. die Funktion für das Ändern eines Datensatzes aufgerufen wird, diese eine Datenbank-Verbindung öffnet und auch wieder schließt. Das kann nun pro Seite unterschiedlich oft der Fall sein - so 5 bis 50 Mal, würde ich sagen.

Würde es nun merkliche Geschwindigkeitsvorteile bringen, die Datenbankverbindung einmal beim Start der Seite zu öffnen und erst nach dem Abarbeiten wieder zu schließen?

  1. 你好 Marc,

    Der Bequemlichkeit halber habe ich es so gemacht, dass jedesmal, wenn
    z.B. die Funktion für das Ändern eines Datensatzes aufgerufen wird,
    diese eine Datenbank-Verbindung öffnet und auch wieder schließt.

    Ouch.

    Das kann nun pro Seite unterschiedlich oft der Fall sein - so 5 bis 50
    Mal, würde ich sagen.

    Doppel-Ouch.

    Würde es nun merkliche Geschwindigkeitsvorteile bringen, die
    Datenbankverbindung einmal beim Start der Seite zu öffnen und erst nach
    dem Abarbeiten wieder zu schließen?

    Ja.

    再见,
     克里斯蒂安

    --
    Neuer alter Plasma-Bildschirm | Meine Schultüte
    If God had a beard, he'd be a UNIX programmer.
    http://wwwtech.de/
    1. Hi,

      Würde es nun merkliche Geschwindigkeitsvorteile bringen, die
      Datenbankverbindung einmal beim Start der Seite zu öffnen und erst nach
      dem Abarbeiten wieder zu schließen?

      Ja.

      Du meinst PHP ist nicht in der Lage das zu optimieren?
      Ja, sowas aber auch!

      ;->

      BTW: kann es sein das Illiad in letzter Zeit etwas der Biss abhanden gekommen ist?

      so short

      Christoph Zurnieden

      1. 你好 Christoph,

        Würde es nun merkliche Geschwindigkeitsvorteile bringen, die
        Datenbankverbindung einmal beim Start der Seite zu öffnen und erst
        nach dem Abarbeiten wieder zu schließen?

        Ja.

        Du meinst PHP ist nicht in der Lage das zu optimieren?

        Hehe, das wäre ein bisschen viel verlangt ;)

        BTW: kann es sein das Illiad in letzter Zeit
        etwas der Biss abhanden gekommen ist?

        Weiss nicht – ich fands jetzt eigentlich wie gewohnt ;)

        再见,
         克里斯蒂安

        --
        Neuer alter Plasma-Bildschirm | Meine Schultüte
        Unsere Vorstellungen von der Ewigkeit sind genauso nuetlich wie die Mutmassungen eines Kuehkens ueber die Aussenwelt bevor es die Eierschale aufbricht.
        http://wwwtech.de/
        1. Hi,

          Du meinst PHP ist nicht in der Lage das zu optimieren?

          Hehe, das wäre ein bisschen viel verlangt ;)

          Gut, eigentlich war meine Spitze nur ein Aufhaenger damit ich meinen Kommentar zum User-Friendly-Comic vom siebzehnten loswerden kann, aber: waere das wirklich so schwierig?
          Der einzige Grund die Datenbanverbindung dauernd zu kappen waere es, wenn die DB hart am Abgrund arbeitet, d.h. wenn Verbindungen geloest werden muessen, damit andere auch mal ran koennen. Die Effektivitaet solchen Vorgehens ist aber natuerlich vehement zu bezweifeln und deshalb gibt es schonmal keinen Grund _nicht_ zu optimieren.
          Es gibt natuerlich das Problem der Erkenntnis: wie soll der Optimierer wissen auf was er achten soll? Wenn die MySQL-Anbindung ein echtes Build-In ist (nicht kontrolliert, ich trau mich nicht -- befuerchte entdecken zu koennen, das es tatsaechlich so ist ;-), sollte das kein Problem darstellen. Wenn es das nicht ist wird's naturgemaess etwas schwieriger. Da es aber, wie oben festgestellt rein gar keinen Grund gibt sich bei einer Datenbank dauernd ab- und anzumelden waere diese Optimierung eher direkt in die normale DB-Oeffnen-Funktion einzubauen. Fuer so Leute wie mich, die auf Befehlsverweigerung gerne mit standrechtlicher Erschiessung reagieren (apt-get remove $PKG) sollte dann aber noch eine DWYHBTTD-Version[1] mit rein.

          BTW: kann es sein das Illiad in letzter Zeit
          etwas der Biss abhanden gekommen ist?

          Weiss nicht – ich fands jetzt eigentlich wie gewohnt ;)

          Gut, stimmt auch mal wieder, was der Satiriker _daran_ noch ueberhoehen kann ... ;-)

          so short

          Christoph Zurnieden

          [1] Do What You Hav Been Told To Do.

          1. 你好 Christoph,

            sorry, aber mir geht es ziemlich übel, hab ne Grippe, mein Kopf fühlt sich
            an wie in Watte gepackt. Die Diskussion müssen wir verschieben.

            再见,
             克里斯蒂安

            --
            Neuer alter Plasma-Bildschirm | Meine Schultüte
            Wenn der Schüler bereit ist, erscheint der Meister.
            http://wwwtech.de/
            1. Hi,

              sorry, aber mir geht es ziemlich übel, hab ne Grippe, mein Kopf fühlt sich
              an wie in Watte gepackt. Die Diskussion müssen wir verschieben.

              *tack-tack-tack*
              "Damunherrn, BWV 262! Uuuund bitte!"

              Oder isses noch zu frueh?

              so short

              Christoph Zurnieden

              PS
              BWV 262 ist irrefuehrend, ist hoechstwahrscheinlich von Johann Pachelbel (1653-1706 in Nuernberg).
              CZ

  2. Hi,

    da sich deine Datenbankzugriffe ja vermutlich nicht auf 2-3 pro Seite beschränken:
    Spricht irgendwas dagegen, eine persistente Verbindung aufzubauen?

  3. generell kostet es extra zeit, eine db-verbindung herzustellen. dies mag bei jedem db-system unterschiedlich sein.
    wenn du also zeitlich nacheinander, erst eine db-verbindung öffnest und dann wieder schließt, addieren sich die zeiten folglich.

    es ist aber möglich, eine bereits bestehende db-verbindung für eine zusätzliche db-verbindung zu nutzen. in mysql wird dies defaultmäßig erreicht, wenn bei der zusätzlichen db-verbindung die identische verbindungsinformation benutzt wird.

    aber wie schließt du die db-verbindung? benutzt du explizit close? bei scriptende werden offene db-verbindungen eh vom php-interpreter geschlossen. ein explizites close wäre nicht nötig.

    die alternative wäre die db-verbindung mit pconnect zu erstellen, da hierbei die db-verbindung nicht geschlossen wird.

  4. Danke für die Antworten - Gestern ist es leider zu spät geworden...

    Dagegen spricht eigentlich nichts, außer, dass ich sämtliche Seiten mysql-Funktionen ändern muss... :-/ Aber das krieg ich auch noch hin :D