Steuert einen Ressourcenwächter, der die maximale Anzahl von vorbereiteten Anweisungen begrenzt, die eine Verbindung gleichzeitig verwenden kann
Ganzzahl
50
Kann für eine einzelne Verbindung oder die Gruppe PUBLIC angegeben werden. Wird sofort wirksam. Zum Setzen dieser Option für eine beliebige Verbindung ist die DBA-Berechtigung erforderlich.
Anwendungen, die vorbereitete Anweisungen verwenden, können den Fehler "Ressourcenwächter hat Grenze für 'vorbereitete Anweisungen' überschritten" erhalten, wenn die vorbereiteten Anweisungen nicht explizit gelöscht werden, sobald sie nicht mehr benötigt werden. Die Datenbankoption max_statement_count ist ein Ressourcenwächter, der es dem DBA ermöglicht, die Anzahl der vorbereiteten Anweisungen pro Verbindung zu begrenzen. Falls ein Vorgang die Grenze für eine Verbindung überschreitet, wird ein Fehler erzeugt, der anzeigt, dass die Ressourcengrenze überschritten wurde.
Wenn eine Verbindung eine gespeicherte Prozedur ausführt, wird diese gespeicherte Prozedur mit den Berechtigungen des Prozedureigentümers ausgeführt. Die von der Prozedur verwendeten Ressourcen werden jedoch der aktuellen Verbindung zugeordnet.
Der Datenbankserver hält Datenstrukturen für jede vorbereitete Anweisung aufrecht, die eine Verbindung erstellt. Diese Strukturen werden erst freigegeben, wenn die Anwendung dem Datenbankserver signalisiert, dass die vorbereiteten Anweisungen nicht mehr benötigt werden, oder wenn die Verbindung getrennt wird. Um die Anzahl der Anweisungen bei einer Verbindung zu vermindern, müssen Sie das Äquivalent einer DROP STATEMENT-Anforderung ausführen. Die folgende Tabelle listet die Befehle auf, die Sie bei den von SQL Anywhere unterstützten APIs ausführen können:
Schnittstelle | Anweisung |
---|---|
ADO | RecordSet.Close |
ADO.NET | SADataReader.Close oder SADataReader.Dispose |
Embedded SQL | DROP STATEMENT |
Java | resultSet.Close, Statement.Close |
ODBC | SQLFreeStmt( hstmt, SQL_DROP ) oder SQLFreeHandle( SQL_HANDLE_STMT, hstmt ) |
In Java and .NET wird empfohlen, dass Sie Anweisungen explizit löschen. Sie sollten sich nicht auf die Abfalldatensammlung verlassen, um diese Bereinigung durchzuführen, weil die Sprachroutinen keine Serveraufrufe ausgeben, um die Anweisungsressourcen freizugeben. Überdies gibt es keine Garantie, wann die Routinen zur Abfalldatensammlung ausgeführt werden.
Wenn ein Server mehr als die Standardanzahl von vorbereiteten Anweisungen jeweils für eine Verbindung unterstützen muss, sollte die Einstellung max_statement_count auf einen höheren Wert gesetzt werden. Beachten Sie allerdings, dass eine größere Anzahl von aktiven vorbereiteten Anweisungen zusätzlichen Serverspeicher verbraucht. Sie können den Ressourcenwächter für vorbereitete Anweisungen ganz ausschalten, indem Sie die Option max_statement_count auf "0" (Null) setzen, aber das ist nicht empfehlenswert. Wenn Sie es tun, wird der Datenbankserver für eine Beendigung aufgrund einer Speichermangel-Bedingung bei solchen Anwendungen anfällig, die vorbereitete Anweisungen nicht korrekt freigeben.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |