Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort
Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 23 Datenbankverbindung mit ADO.NET
Pfeil 23.1 ADO.NET-Provider
Pfeil 23.2 Verbindungen mit dem Datenprovider
Pfeil 23.2.1 DbConnection-Objekt
Pfeil 23.2.2 Die Verbindungszeichenfolge
Pfeil 23.2.3 Die Verbindung zu einer bestimmten SQL Server-Instanz
Pfeil 23.2.4 Änderung des Passworts bei der SQL Server-Authentifizierung
Pfeil 23.2.5 Verbindungszeichenfolgen mit DbConnectionStringBuilder
Pfeil 23.2.6 Öffnen und Schließen einer Verbindung
Pfeil 23.2.7 Testrahmen
Pfeil 23.3 Verbindungspooling
Pfeil 23.3.1 Beispiel für das Verbindungspooling
Pfeil 23.3.2 Verbindungspooling deaktivieren
Pfeil 23.3.3 Verbindungspoolgröße manipulieren
Pfeil 23.3.4 Freigabe gepoolter Verbindungen
Pfeil 23.4 Ereignisse eines Connection-Objekts
Pfeil 23.4.1 StateChange
Pfeil 23.4.2 InfoMessage
Pfeil 23.5 Verbindungszeichenfolgen aus einer Konfigurationsdatei abrufen
Pfeil 23.6 Connection im Überblick
Pfeil 23.6.1 Vererbungshierarchie
Pfeil 23.6.2 Ereignisse eines SqlConnection-Objekts
Pfeil 23.6.3 Eigenschaften eines SqlConnection-Objekts
Pfeil 23.6.4 Methoden des Connection-Objekts
Pfeil 23.7 Verbindungen mit dem OleDb-Datenprovider
Pfeil 23.7.1 Verbindungsaufbau zu einer SQL Server-Datenbank
Pfeil 23.7.2 Verbindungsaufbau zu einer Access-Datenbank
Pfeil 23.7.3 Authentifizierung mit dem OleDb-Provider


Rheinwerk Computing - Zum Seitenanfang

23.3 Verbindungspooling Zur nächsten ÜberschriftZur vorigen Überschrift

Stellen Sie sich eine Datenbank im Internet vor, zum Beispiel für Angebote eines Touristikunternehmens. Innerhalb einer kurzen Zeitspanne werden sich mehrere Anwender über die Angebote informieren wollen. Das ständige Auf- und Abbauen der Verbindungen ist jedoch nachteilig, denn mit jedem Aufbau und Abbau einer physischen Verbindung werden die Ressourcen belastet, was zu einer schlechteren Antwortzeit des Datenbankservers führt.

Um die Leistung von Datenbankanwendungen zu verbessern, unterstützt ADO.NET das Konzept der Verbindungspools. Bisher wurde gesagt, dass der Aufruf der Methode Close die Verbindung zur Datenbank schließt. Ganz exakt stimmt diese Aussage nicht (wenn man von den Standardeinstellungen ausgeht). Close bewirkt lediglich, dass die Verbindung in einen Pool geschoben wird. Die physische Verbindung bleibt auch dann bestehen, wenn das SqlConnection-Objekt aufgegeben wird.

Ein Verbindungspool beherbergt nur Verbindungen, die exakt dieselbe Verbindungszeichenfolge haben. Selbst bei kleinsten Abweichungen wird ein neuer Pool erzeugt. Versucht ein Client, die Verbindung mit einer Datenbank herzustellen, werden zunächst alle vorhandenen Pools nach einer passenden Verbindung durchsucht. Passt eine, wird sie dem anrufenden Client zugeordnet, wenn nicht, wird die angeforderte Verbindung neu erstellt. Der Client bearbeitet auf dieser Verbindung die Daten und kann sie am Ende mit Close wieder aufgeben. In jedem Fall wird die Verbindung danach einem Pool zugeführt.

Für jeden Client, der nicht aus einem vorhandenen Verbindungspool versorgt werden kann, wird eine neue Verbindung erstellt. Bei stark frequentierten Datenbanken führt das auf Dauer zu einem inakzeptablen Anwachsen des Pools. Daher wird eine Verbindung aus dem Pool nach einer bestimmten Zeit der Inaktivität gelöscht, standardmäßig nach circa fünf Minuten.

ADO.NET gestattet es Ihnen, das Poolen der Verbindungen zu steuern, um es möglichst gut den spezifischen Anforderungen anzupassen. Sie können sowohl die maximale als auch die minimale Poolgröße festlegen sowie gepoolte Verbindungen manuell freigeben und das Verbindungspooling sogar deaktivieren.


Rheinwerk Computing - Zum Seitenanfang

23.3.1 Beispiel für das Verbindungspooling Zur nächsten ÜberschriftZur vorigen Überschrift

Im folgenden Codefragment wird als Beispiel eine Verbindung zehnmal angefordert:


'...\ADO\Verbindung\Verbindungspooling.vb

Option Strict On 
Imports System.Data.Common 
Imports System.Data.SqlClient 
Namespace ADO 
  Module Verbindungspooling 
    Sub Test() 
      Dim con As DbConnection = New SqlConnection( _ 
          "Data Source=(local);Initial Catalog=Northwind;" & _ 
          "Integrated Security=sspi") 
      ' Verbindung 10-mal öffnen und schließen 
      For i As Integer = 0 To 9 
        con.Open() 
        con.Close() 
        System.Threading.Thread.Sleep(100) 
      Next i 
      Console.ReadLine() 
    End Sub 
  End Module 
End Namespace

Weiter oben in diesem Kapitel haben wir bereits das Tool SQL Server Profiler aus dem SQL Server Management Studio eingesetzt, um uns von den Auswirkungen der Methode Close zu überzeugen. Natürlich spielte auch bei diesen Beispielen das Verbindungspooling eine Rolle, war aber zum grundlegenden Verständnis der Close-Methode nicht erforderlich.

Nun verwenden wir den Profiler, um das Poolen von Verbindungen live zu erleben. In Abbildung 23.3 sehen Sie die Aufzeichnung nach dem Ausführen der Beispielprozedur Verbindungspooling. Obwohl zehnmal eine Verbindung aufgebaut wird, ist dennoch nur ein Login- und ein abschließendes Logout-Ereignis zu sehen. Dies geschieht, weil jede Verbindung nach dem Öffnen und dem sich anschließenden Schließen mit Close zwar aus Sicht des Clients geschlossen wird, tatsächlich jedoch in einen Pool wandert, aus dem sie bei jedem weiteren Schleifendurchlauf mit Open wieder in Anspruch genommen wird.

Abbildung 23.3 Ablaufverfolgungsprotokoll des SQL Server-Profilers beim Poolen


Rheinwerk Computing - Zum Seitenanfang

23.3.2 Verbindungspooling deaktivieren Zur nächsten ÜberschriftZur vorigen Überschrift

Standardmäßig ist das Pooling aktiviert. Um es zu deaktivieren, ergänzen Sie die Verbindungszeichenfolge wie folgt:

Dim con As DbConnection = New SqlConnection("Data Source=wsak\\SQL2005;" & _ 
  "Initial Catalog=Northwind;Integrated Security=sspi;" & _ 
  "Pooling=False")

Wenn Sie die Verbindungszeichenfolge mit einem SqlConnectionStringBuilder-Objekt erzeugen, legen Sie dessen Eigenschaft Pooling auf False fest.

Im SQL Server Profiler kann das Abschalten des Poolings wieder anschaulich nachverfolgt werden. Für jedes Verbindungsgesuch wird ein Login- und ein Logout-Ereignis protokolliert, wie Abbildung 23.4 zeigt.

Abbildung 23.4 Ablaufverfolgungsprotokoll des SQL Server-Profilers bei abgeschaltetem Poolen


Rheinwerk Computing - Zum Seitenanfang

23.3.3 Verbindungspoolgröße manipulieren Zur nächsten ÜberschriftZur vorigen Überschrift

Sowohl die Maximalgröße als auch die Minimalgröße eines Verbindungspools lassen sich steuern. Der Standard für die Minimalgröße ist 0, für die Maximalgröße sind 100 gepoolte Verbindungen vorsehen.

Betrachten wir zuerst die Minimalgröße etwas genauer, hier mit dem Wert 10. Die ersten 10 parallelen Verbindungen lassen den Pool auf 10 Verbindungen anwachsen. Diese bedienen eventuell anfordernde Clients. Sind mehr Verbindungen notwendig, wird der Pool vergrößert, aber die Mindestanzahl wird nicht mehr unterschritten, auch wenn zeitweise keine Verbindung mehr benötigt wird. Die Lebensdauer von ca. fünf Minuten, die ansonsten für gepoolte Verbindungen gilt, betrifft nicht die zehn Verbindungen, die zur Sicherung der Mindestpoolgröße erforderlich sind.

Die Festlegung der Maximalpoolgröße begrenzt die Auslastung eines Datenbankservers. Angenommen, zu einem gegebenen Zeitpunkt ist der Pool ausgeschöpft, weil alle darin enthaltenen Verbindungen aktiv von Clients beansprucht werden. Kommt es dann zu einem weiteren Verbindungsgesuch, wird versucht, innerhalb der Zeitspanne, die in Connect Timeout festgelegt ist, dem anfordernden Client eine Verbindung bereitzustellen. Gelingt das nicht, wird eine InvalidOperationException ausgelöst.

Zur Festlegung der minimalen und maximalen Verbindungspoolgröße dienen uns wieder zwei Attribute in der Verbindungszeichenfolge: Min Pool Size und Max Pool Size. Passend dazu werden von einem SqlConnectionStringBuilder-Objekt die beiden Eigenschaften MinPoolSize und MaxPoolSize angeboten.

Dim con As DbConnection = New SqlConnection( _ 
  "Data Source=wsak\\SQL2005;Initial Catalog=Northwind;" & _ 
  "Integrated Security=sspi;" & _ 
  "Min Pool Size=5;Max Pool Size=200")

Rheinwerk Computing - Zum Seitenanfang

23.3.4 Freigabe gepoolter Verbindungen topZur vorigen Überschrift

Gepoolte Verbindungen können mit den beiden statischen Methoden ClearPool und ClearAllPools freigegeben werden. ClearPool wird ein SqlConnection-Objekt übergeben:

SqlConnection.ClearPool(con)

Das Connection-Objekt ist notwendig, um über dessen Verbindungszeichenfolge den Pool zu bestimmen, in dem Verbindungen aufgegeben werden sollen. Es werden ausschließlich inaktive Verbindungen entfernt, von Clients aktuell beanspruchte bleiben erhalten.

Die parameterlose Methode ClearAllPools löscht alle freien Verbindungen in den Pools.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.







<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual Basic 2008
Visual Basic 2008
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Nutzungsbestimmungen | Datenschutz | Impressum>

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern