Optimierung der Verbindungsnutzung
Das Einrichten einer Verbindung erfordert sowohl auf Client- als auch auf Serverseite Zeit und Arbeitsspeicher. Wenn Sie Verbindungen optimieren, heißt das, einen Mittelweg zu finden zwischen Ihrem Wunsch nach höchster Leistung und den von Ihrer Anwendung gestellten Ressourcenanforderungen.
Wie viele Verbindungen Visual FoxPro nutzt, hängt zum einen davon ab, ob Sie dafür sorgen, dass ungenutzte Verbindungen geschlossen werden, und zum anderen, auf welchen Wert Sie die Zeitüberschreitung für Leerlauf eingestellt haben.
Einsetzen gemeinsam genutzter Verbindungen
Sie können eine Verbindung exklusiv einsetzen oder zur gemeinsamen Nutzung freigeben. Jede Methode hat ihre Vorteile. Wenn Sie eine Verbindung exklusiv nutzen, muss Ihre Anwendung nicht mit anderen Anwendungen um die Verbindungsressourcen konkurrieren, nachdem die Verbindung hergestellt ist. Wenn für jedes Resultset eine exklusive Verbindung genutzt wird, können Sie außerdem asynchrone Verarbeitung für mehrere Resultsets parallel ausführen.
Wenn Sie mit einer gemeinsam genutzten Verbindung arbeiten, gibt es nur eine Verbindung für mehrere Resultsets. Dadurch sind Sie gezwungen, für die Resultsets, für die dieselbe Verbindung genutzt wird, alle datenbezogenen Verarbeitungsvorgänge der Reihe nach vorzunehmen und die Anwendung so zu programmieren, dass sie die Verbindung immer dann bezüglich der Auslastung prüft, wenn Konflikte auftreten könnten. Informationen zur gemeinsamen Verwendung einer Verbindung finden Sie unter Erstellen von Ansichten.
Festlegen des Verbindungszeitlimits
Wenn Ihre Anwendung über einen längeren Zeitraum keinen Vorgang auslöst, lässt sich die Zahl der Verbindungen reduzieren, indem Sie die IdleTimeout-Eigenschaft der jeweiligen Verbindung entsprechend einstellen. Mit der IdleTimeout-Eigenschaft einer Verbindung legen Sie fest, wie lange die Verbindung im Leerlauf aufrechterhalten bleibt, bevor sie von Visual FoxPro getrennt wird. Standardmäßig warten Verbindungen unbegrenzt lange und werden erst dann deaktiviert, wenn ein Benutzer die jeweilige Verbindung trennt.
Sie können die Leerlaufzeit für eine Verbindungsdefinition mit der IdleTimeout-Eigenschaft der DBSETPROP( )-Funktion einstellen; die IdleTimeout-Eigenschaft einer aktiven Verbindung lässt sich mit der SQLSETPROP( )-Funktion einstellen.
Visual FoxPro trennt Verbindungen auch dann, wenn Datenblattfenster und Formulare, die Remotedaten anzeigen, geöffnet sind, und stellt die Verbindung wieder her, sobald sie benötigt wird. Trifft aber eine der folgenden Bedingungen zu, kann Visual FoxPro eine Verbindung nicht trennen:
- Die Ergebnisse einer an den Server gerichteten Abfrage wurden noch nicht abgerufen.
- Die Verbindung arbeitet im Modus "Manuelle Transaktionen". Damit die Verbindung getrennt werden kann, müssen Sie die Transaktion übergeben (commit) oder zurücksetzen (roll back) und in den Modus "Automatische Transaktionen" wechseln.
Sie können den Transaktionsmodus für eine Verbindungsdefinition mit der Transactions-Eigenschaft der DBSETPROP( )-Funktion einstellen; den Transaktionsmodus für eine aktive Verbindung können Sie mit der SQLSETPROP( )-Funktion festlegen.
Trennen von Verbindungen
Sie können das Leistungsverhalten verbessern, indem Sie die Verbindungen trennen, die Ihre Anwendung nicht mehr benötigt. Sobald Sie eine Ansicht geschlossen haben, wird die zugehörige Verbindung automatisch getrennt. Wird eine Verbindung von mehreren Ansichten genutzt, trennt Visual FoxPro diese Verbindung, unmittelbar nachdem Sie die letzte noch geöffnete Ansicht geschlossen haben.
Wenn Sie die in einem Cursor befindlichen Daten nicht aktualisieren möchten, können Sie die Verbindung, die für die zugehörige Abfrage genutzt wird, manuell festlegen. Kopieren Sie die benötigten Daten mit einer SQL Pass-Through-Abfrage in einen lokalen Cursor, und trennen Sie danach die Verbindung.
Siehe auch
Client/Server-Leistungsoptimierung | Beschleunigen des Abrufens von Daten | Beschleunigung von Abfragen und Ansichten | Leistungsverbesserung bei Aktualisierungs- und Löschvorgängen | Beschleunigung von Formularen | Implementieren einer Client/Server-Anwendung | Erstellen von Ansichten