Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Permanente Verbindung, oder ständig neu connecten? (https://www.delphipraxis.net/148059-permanente-verbindung-oder-staendig-neu-connecten.html)

TheMiller 21. Feb 2010 17:19

Datenbank: MySQL • Version: 5 • Zugriff über: Zeos

Permanente Verbindung, oder ständig neu connecten?
 
Hallo,

ich bin gerade am Überarbeiten meines Programms. Es baut auf einer MySQL-Datenbank auf und bezieht alle Daten aus ihr. Nun würde ich gerne wissen, was vorteilhafter ist: Entweder, die DB-Verbindung bei Programmstart zu öffnen und beim Beenden zu schließen, also eine permanente Verbindung, oder die Verbindung dann zu öffnen, wenn sie gebraucht wird und nach Gebrauch wieder zu schließen.

Bei letzterer Variante müsste die Verbindung halt wieder neu hergestellt werden, wenn wieder Daten geladen werden sollten.

Ich überlege aus mehreren Gründen. Einmal aus dem Grund der Fehlerbehandlung (zB "MySQL-Server has gone away"), aus Verbindungsgeschwindigkeitsgründen (einige User arbeiten nur im Lan, andere via VPN, andere im Lan oder per VPN).

Ich danke euch!

Phoenix 21. Feb 2010 17:31

Re: Permanente Verbindung, oder ständig neu connecten?
 
Das Aufbauen einer Datenbankverbindung ist ein relativ teurer Vorgang.

Das kann bei kleinen, gezielten Abfragen die in aller Regeln von der Datenbank aus einem Cache-Hit beantwortet werden dazu führen, dass 90% der Zeit für das Aufbauen der Verbindung genutzt wird, 5% für die Abfrage und 5% für das Schliessen der Verbindung. Wird das öfter gemacht ist die Datenbank mehr damit beschäftigt die Verbindungen zu verwalten als Anfragen zu beantworten.

Die meisten guten DB-Verbindungskomponenten (z.B. die von Corelabs / Devart) beherrschen Verbindungspooling. Damit wird eine Verbindung einmal hergestellt und dann im Hintergrund offen gehalten bis sie wieder benötigt wird. Ich würde das nutzen, weil es sich anbietet, die Ressourcen der Datenbank schont und man dennoch ein recht einfaches Fehlerhandling damit hat.

TheMiller 21. Feb 2010 17:42

Re: Permanente Verbindung, oder ständig neu connecten?
 
Also, ich nutze die ZeosLib. Ich habe Prozeduren zum Verbinden und Trennen, eben connect und disconnect halt. Ich weis nicht, ob es das ist, was du meinst.

Aber einen Nachteil sehe ich da schon. Verliert man die Netzwerkverbindung, treten Fehler auf wie "MySQL-Server has gone away" etc. Klar, das Connecten dauert lange, deswegen wollte ich nach eurer Meinung fragen.

Jens Hartmann 21. Feb 2010 17:45

Re: Permanente Verbindung, oder ständig neu connecten?
 
Hallo DJ-SPM,

ich benutze ebenfalls die ZEOS-Lib. Beim starten von meinem Programm baue ich die Verbindung zur Datenbank auf und erst beim OnDestroy trenne ich diese.

Dies hat den Vorteil, das Du nicht jedesmal bei einer Abfrage erst die Verbindung herstellen musst.

Außerdem, ist es ja auch in Ordnung wenn bei einem Netzwerkfehler eine Meldung kommt, da es ja auch einen Fehler gibt.

Gruß Jens

TheMiller 21. Feb 2010 17:57

Re: Permanente Verbindung, oder ständig neu connecten?
 
Ok gut, dann lass ich das mal so ;)

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz