Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Datenzugriff mit ADO.NET und .NET Core

Connection Pooling dient der Performance

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Weil der eigentliche Verbindungsaufbau zur Datenbank recht ressourcenhungrig und zeitaufwendig ist, werden im .NET-Core-Framework von der Anwendung "geschlossene" Verbindungen im Hintergrund weiter aufrecht gehalten und stehen bei erneutem Aufruf schneller zur Verfügung.
02:35

Transkript

Bevor es mit dem Ausführen von Anweisungen weitergeht, zunächst einmal ein wichtiger Punkt und zwar das Connection Pooling. Ich hatte es am Anfang schonmal erwähnt, dass nicht zwangsläufig jeder Aufruf von "Open" bedeutet, dass eine neue Verbindung aufgebaut wird. Vielmehr geht das .NET Framework und das .NET Framework Core so vor, dass Verbindungen, die geschlossen werden, zurückgesetzt und dann in einen Pool aufgenommen werden. Das bedeutet, da stehen die Verbindungen erstmal zur Verfügung, sind nach wie vor geöffnet und tauchen auch, wenn sie entsprechend über den Activity Monitor des SQL Servers zum Beispiel gehen, dort auch in der Tat wirklich noch auf. Der Gedanke dahinter ist einfach, das Aufbauen einer Verbindung ist relativ aufwendig und muss jedes Mal, wenn ich wirklich eine neue Verbindung aufbaue, müsste das ja jedes Mal neu gemacht werden. Das möchte man einfach schlicht und ergreifend vermeiden und geht deswegen hin und poolt die Connections. Das Connection Pooling geschieht quasi automatisch, ich kann es, wenn ich möchte, wirklich ausstellen. Ich habe die Möglichkeit, über den ConnectionString zu sagen, ich möchte kein Pooling haben und kann das entsprechend auf "false" setzen, das ist schlicht eine Eigenschaft, die ich da als [unverständlich] über den ConnectionString Builder setzen kann. Das Connection Pooling richtet sich nach den ConnectionStrings, das heißt, für jeden individuellen ConnectionString wird ein einzelner Pool aufgemacht. Deswegen ist es keine gute Idee, Informationen in den ConnectionString reinzubringen, die, sagen wir mal, User-individuell sind oder die beispielsweise sowas wie den Verbindungszeitpunkt beinhalten, dass man die möglicherweise irgendwo ausliest oder ähnliches. Ich habe da durchaus schon einiges gesehen. Man kann das als Application-Name quasi tarnen und dort Informationen unterbringen. Das hat dann sozusagen nur den Effekt, dass für jeden ConnectionString ein neuer Pool aufgebaut wird und das hebelt natürlich letztendlich das Connection Pooling völlig aus an der Stelle. Was ich machen kann, ich kann natürlich die Pools zurücksetzen, das sind zwei statische Methoden auf dem SQL Connection Objekt, nämlich entweder "ClearPool" oder "ClearAllPools" und damit werden die gesamten Verbindungen auch wieder eliminiert und die Pools freigeräumt an der Stelle. Das ist nur eine wichtige Sache, es ist also kein Fehler -- definitiv kein Fehler --, dass wenn ein SQL Connection Objekt geschlossen wird, die Verbindung aber offen bleibt, das ist kein Bug, sondern es ist wirklich ein Feature, was dafür sorgt, dass Abfragen performant ausgeführt werden und nicht jedes Mal der umständliche Prozess laufen muss, um eine Verbindung zum Server aufzubauen.

Datenzugriff mit ADO.NET und .NET Core

Lernen Sie, wie mit Ihrer .NET Core-Anwendung auf relationale Datenbanken wie z.B. SQL Server oder SQLite zugreifen.

2 Std. 49 min (28 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!