Arbeiten mit Anweisungen und Resultsets

JDBC-Treiber herunterladen

Wenn Sie die Statement- und ResultSet-Objekte von Microsoft JDBC-Treiber für SQL Server verwenden, gibt es mehrere Möglichkeiten, um die Leistung und Zuverlässigkeit der Anwendungen zu verbessern.

Verwenden des geeigneten Statement-Objekts

Wenn Sie eines der Statement-Objekte des JDBC-Treibers verwenden, z.B. ein SQLServerStatement-, ein SQLServerPreparedStatement- oder ein SQLServerCallableStatement-Objekt, müssen Sie das für den Auftrag geeignete Objekt verwenden.

  • Wenn Sie über keine OUT-Parameter verfügen, müssen Sie das SQLServerCallableStatement-Objekt nicht verwenden. Verwenden Sie stattdessen das SQLServerStatement- oder das SQLServerPreparedStatement-Objekt.
  • Wenn Sie die Anweisung nicht mehrmals ausführen möchten oder keine IN- oder OUT-Parameter verwenden, müssen Sie das SQLServerCallableStatement-Objekt oder das SQLServerPreparedStatement-Objekt nicht verwenden. Verwenden Sie stattdessen das SQLServerStatement-Objekt.

Verwenden der geeigneten Parallelität für ResultSet-Objekte

Verwenden Sie beim Erstellen von Anweisungen, die Resultsets erzeugen, keine aktualisierbare Parallelität, wenn die Ergebnisse nicht aktualisiert werden sollen. Das Standardmodell mit schreibgeschütztem Vorwärtscursor weist beim Lesen von kleinen Resultsets die höchste Leistung auf.

Einschränken der Größe von Resultsets

Sie sollten die setMaxRows-Methode (bzw. die SQL-Syntax SET ROWCOUNT oder SELECT TOP N) verwenden, um die Anzahl der von möglicherweise umfangreichen Resultsets zurückgegebenen Zeilen zu beschränken. Bei der Verarbeitung von umfangreichen Resultsets sollten Sie eine adaptive Antwortpufferung verwenden, indem Sie die Verbindungszeichenfolgeneigenschaft "responseBuffering" auf "adaptive" (den Standardmodus) festlegen. So kann die Anwendung große Resultsets verarbeiten, ohne serverseitige Cursor verwenden zu müssen, und die Anwendungsspeicherauslastung minimieren. Weitere Informationen finden Sie unter Using adaptive buffering (Verwenden der adaptiven Pufferung).

Verwenden der geeigneten Abrufgröße

Bei schreibgeschützten Servercursorn muss ein Kompromiss zwischen den Roundtrips zum Server und dem im Treiber verwendeten Speicher gefunden werden. Bei aktualisierbaren Servercursorn beeinflusst außerdem die Abrufgröße die Sensitivität des Resultsets gegenüber Änderungen und die Parallelität des Servers. Updates von Zeilen im Fetchpuffer werden erst dann sichtbar, wenn explizit eine refreshRow-Methode ausgegeben wird oder der Cursor den Fetchpuffer verlässt. Große Fetchpuffer weisen eine höhere Leistung (weniger Serverroundtrips) aber eine geringere Sensitivität gegenüber Änderungen auf und verringern die Parallelität des Servers, wenn CONCUR_SS_SCROLL_LOCKS (1009) verwendet wird. Verwenden Sie die Abrufgröße "1", um die Sensitivität gegenüber Änderungen zu maximieren. Bei dieser Einstellung ist jedoch für jede abgerufene Zeile ein Roundtrip zum Server erforderlich.

Verwenden von Datenströmen für umfangreiche IN-Parameter

Verwenden Sie Datenströme oder BLOBs und CLOBs, die inkrementell gefüllt werden, um umfangreiche Spaltenwerte zu aktualisieren oder umfangreiche IN-Parameter zu senden. Der JDBC-Treiber sendet diese Typen blockweise in mehreren Roundtrips an den Server, sodass Werte festgelegt und aktualisiert werden können, die größer sind als der verfügbare Speicher.

Weitere Informationen

Verbessern von Leistung und Zuverlässigkeit mit dem JDBC-Treiber