ASP Tipp 5: Zwischenspeichern Sie Datenbankverbindungen nicht in den Objekten „Application“ oder „Session“

Das Zwischenspeichern von ADO-Verbindungen ist normalerweise keine gute Strategie. Wenn ein Connection-Objekt im Application-Objekt gespeichert und auf allen Seiten verwendet wird, konkurrieren alle Seiten um diese Verbindung. Wenn das Connection-Objekt im Session-Objekt von ASP gespeichert wird, wird für jeden Benutzer eine Datenbankverbindung erstellt. Damit werden die Vorteile des Verbindungs-Pooling zunichte gemacht und der Webserver und die Datenbank unnötig belastet.

Anstatt Datenbankverbindungen zwischenzuspeichern, sollten Sie auf jeder Seite, die ADO verwendet, ADO-Objekte erstellen und löschen. Dies ist effizient, da das Verbindungs-Pooling in IIS integriert ist. Genauer gesagt, aktiviert IIS OLEDB- und ODBC-Verbindungs-Pooling automatisch. Dadurch wird auf jeder Seite ein effizientes Erstellen und Löschen von Verbindungen sichergestellt.

Da verbundene Recordsets eine Referenz auf eine Datenbankverbindung speichern, sollten diese nicht im Application- oder Session-Objekt zwischengespeichert werden. Sie können abgetrennte Recordsets, die keine Referenz auf ihre Datenverbindung enthalten, aber problemlos zwischenspeichern. Gehen Sie folgendermaßen vor, um ein Recordset abzutrennen:

Set rs = Server.CreateObject(„ADODB.RecordSet“)

rs.CursorLocation = adUseClient ‚ step 1

‚ Populate the recordset with data

rs.Open strQuery, strProv

‚ Now disconnect the recordset from the data provider and data source

rs.ActiveConnection = Nothing ‚ step 2

Weitere Informationen zum Verbindungs-Pooling finden Sie in den Verweisen auf ADO und SQL Server.