AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Permanente Verbindung, oder ständig neu connecten?
Thema durchsuchen
Ansicht
Themen-Optionen

Permanente Verbindung, oder ständig neu connecten?

Ein Thema von TheMiller · begonnen am 21. Feb 2010 · letzter Beitrag vom 21. Feb 2010
Antwort Antwort
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Permanente Verbindung, oder ständig neu connecten?

  Alt 21. Feb 2010, 18:19
Datenbank: MySQL • Version: 5 • Zugriff über: Zeos
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!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Permanente Verbindung, oder ständig neu connecten?

  Alt 21. Feb 2010, 18:31
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Permanente Verbindung, oder ständig neu connecten?

  Alt 21. Feb 2010, 18:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Permanente Verbindung, oder ständig neu connecten?

  Alt 21. Feb 2010, 18:45
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Permanente Verbindung, oder ständig neu connecten?

  Alt 21. Feb 2010, 18:57
Ok gut, dann lass ich das mal so

Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 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