verwendetes Datenbanksystem: alle
Ist es von Vor oder Nachteil wenn ich in einem projekt mehrere datenbankverbindungen verwende. Was ist schneller, wenn ich vieles nacheinander über eine, oder vieles parallel über mehrere connections abarbeite???
cSharp Projekte : https://github.com/jogibear9988
da .net intern connectionpooling verwendet, bringt es dir absolut nichts, mit ein und demselben connectionstring, mehrere connections aufzumachen. denn tatsächlich gehst du trotzdem nur über eine einzige. (ok man kann das umgehen aber per default stimmt das so [denke ich ^^])
außerdem: wozu mehrere connections? hast du keinen DAL?
da .net intern connectionpooling verwendet, bringt es dir absolut nichts, mit ein und demselben connectionstring, mehrere connections aufzumachen. denn tatsächlich gehst du trotzdem nur über eine einzige. (ok man kann das umgehen aber per default stimmt das so [denke ich ^^]) Da gebe ich JAck30lena recht.
Des weiteren sind Connections in ADO.NET so oder so kurzlebig ausgelegt, sodass es keine Rolle spielt ob Du nun permanent eine Connection offen hast oder gleich mehrere hintereinander öffnest.
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Doch, eine permanent offene Connection ist "schädlich" für die Erweiterbarkeit
der Software.
Ja, aber dauert es nicht immer die Connection aufzubauen??? Ist es nicht schneller wenn Ich diese immer offen lasse? So muss ja auch jedes mal von dem Datenbankserver einer Benutzerauthentifizierung durchgeführt werden usw... Was ist eine DAL?
cSharp Projekte : https://github.com/jogibear9988
Das siehst du falsch.
Der ADO.NET ConnectionPool regelt das schon. Ungefähr läuft das so ab
Wenn deine Anwendung also immer wieder die gleiche Connection braucht, wird diese immer nur aus dem Pool genommen. Und wie bereits geschrieben ist diese Connection immer noch offen*.
Für den Connection Pool ist der ConnectionString die eindeutige ID. Wenn also im ConnectionString irgendwo z.B. bei WorkstationID die aktuelle Uhrzeit mit reingeschrieben wird, wird nie der Pool genutzt werden können.
Was ist eine DAL?
Ein Data Abstraction Layer. Dazu such am besten mal nach "3 Tier Design". Ganz grob gesagt, wird im DAL alles geregelt, was die Datenbank betrifft. In der Anwendung selber, wird nie auf die Datenbank zugegriffen, sondern nur auf den DAL.
*Das ganze ist natürlich noch etwas komplexer, aber das kann man alles detailiert nachlesen.
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Was ist schneller, wenn ich vieles nacheinander über eine, oder vieles parallel über mehrere connections abarbeite???
Connection brauchst du nur eine. Wenn du mehrere Befehle parallel abarbeiten lassen möchtest brauchst du Transaktionen.
Außerdem denke ich das es nicht eine Frage der Geschwindigkeit ist, sondern der Notwendigkeit.
Wenn du viele kurze Statements/Transaktionen hast wäre es (wahrscheinlich) besser sie hintereinander durchzuführen, da das Datenbanksystem dann weniger Arbeit hat.
Oft ist dies aber nicht möglich, denn wenn plötzlich eine Transaktion abgearbeitet werden muss die etwas länger dauert, müssen alle anderen Abarbeitungen warten.
(Bei großen Datenmengen im Unternehmensbereich ist es denkbar, dass Transaktionen durchaus mehrere Stunden oder Tage dauern können)
Es kommt also alles ganz auf die Anforderungen und das Design deiner Anwendung an. Aber mehrere gleichzeitig offene Connections sind auf jeden Fall nicht sinnvoll (unter anderem auch wegen dem bereits erwähnten ConnectionPool)
Lg
Preli
PS: sorry dass ich etwas abgeschweift bin