Autor Beitrag
garv3
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: So 30.08.09 22:01 
Hallo zusammen,

ich frage mich momentan, ob es sinnvoller ist, eine SqlCeConnection einmal bei Programmstart zu öffnen und erst beim Beenden zu schließen, oder ob man lieber immer eine Verbindung öffnen sollte, wenn man sie gerade braucht.
Was für eine Dauerverbindung spräche, wäre das Wegfallen eventueller Verzögerungen.
Dagegen könnten Probleme wie z.B. Timeouts o.ä. sprechen. Gibt es irgendwelche Probleme/Einschränkungen im Zusammenhang mir lange (bis zu 48h) geöffneten Verbindungen?
Es ist in meinem speziellen Fall jedenfalls sichergestellt, dass kein anderer Prozess auf die DB zugreift.

Was meint ihr?

Dank und Gruß
garv3
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Mo 31.08.09 08:00 
Moin,

normalerweise verwende ich keine persistenten Verbingungen, die einzige Ausnahme stellen bei mir ODBC-Verbingungen zu MySQL dar. Bei diesen Verbingungen kann der Verbindungsaufbau selber schon zu längeren Öffnungszeiten führen, weswegen ich die Connection geöffnet lasse. Bei einem MS SQL-Server / Oracle konnte ich so etwas noch nicht nachvollziehen, sondern schließe meine Verbindungen immer gleich, nachdem ich die Datenmanipulation oder Sammlung abgeschlossen habe.

Für den Einzelfall kann eine persistente Verbindung Vorteile bieten, allerdings im Performancebereich. Dafür kann diese Verbindung auch Nachteile beim Locking haben. Ist die Performance denn so schlecht?

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
garv3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mo 31.08.09 22:59 
Wirklich schlecht ist die Performance nicht. Manchmal kommt es zu kleineren Verzögerungen (vielleicht 0,1 Sekunden).
Die spürt man schon. Sind aber nicht unbedingt tragisch. Wäre nur schöner, wenn es sich wirklich flüssig anfühlen würde.

Zu welchen Problemen kann es denn kommen, wenn ich die Verbindung nicht schließe? Gibt es soetwas wie timeouts?
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 01.09.09 06:59 
Das Locking ist der Nachteil. Die Datensätze, die du in der Connection geöffnet hast, sind erstmal gesperrt. Und wenn deine Connection nicht abgebaut wird, werden sie auch nicht freigegeben. Bei Transaktionen verhält es sich ähnlich.

Der Timeout ist dabei egal, denn eine persistente Verbinung baut sich ja selber wieder auf.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
garv3 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mi 02.09.09 13:24 
Alles klar. Danke!