On Son, 07 Jul 2002 at 21:59 (+0200), Joerg Frings-Fuerst wrote:
At 20:33 07.07.2002 +0200, Andre Heine wrote:
Hallo alle zusammen,
sollte eine SQL Verbindung schon beim Start einer Anwendung geöffnet werden, oder ist es besser sie bei Bedarf zu erzeugen?
Nach welchen Kriterien läuft das ab? [...] im Grunde ist das dieselbe Frage ob man(n) Variablen lokal oder global definieren sollte.
Für übersichtlicheren Quellcode und einfachere Fehlersuche sollte man Verbindungen bei Bedarf öffnen und nach Gebrauch wieder schließen.
Damit hast Du zwar etwas Code-Overhead aber auch keine Seiteneffekte.
Das sehe ich anders. Nach meiner Erfahrung ist die Verbindungsaufnahme mit einer DB immer eine ziemlich zeitraubende Aktion. Wenn ich _weiss_, dass ich eine Verbindung zur Laufzeit benötige, dann öffne ich sie prinzipiell kurz nach dem Programmstart und schliesse sie erst kurz vor dem Ende wieder. Welche Seiteneffekte soll das haben? Im Gegenteil: Da ich sofort nach dem Programmstart weiss, ob die Verbindungsaufnahme geklappt hat, kann ich das (sonst unter Umständen ziemlich nutzlose) Programm auch gleich beenden - was nutzt mir z. B. der Aufbau einer Suchmaske, wenn ich dann nicht auf die zu durchsuchende DB komme? Der Overhead durch ständige Connects im DBMS ist IMHO viel kritischer zu bewerten. Wenn ich nur unter bestimmten Umständen eine DB-Verbindung brauche, dann kann das anders aussehen. Auch hier sollte man sich aber das Zeitverhalten anschauen. Und ich würde mir überlegen, ob ich dann die einmal aufgebaute Verbindung nicht aufrechterhalte, um weitere Connects zu vermeiden. BTW: Abhängig von der verwendeten Programmiersprache hat man oft keinen Einfluss darauf, wie die Parameter der DB-Verbindung gehalten werden. Arbeitet man z. B. in C mit Informix oder Oracle (esql bzw. proc), dann sind das durch die Präprozessoren generierte, globale Strukturen. Jan