JDBC-Verbindung zu sehr beschäftigt, SQL 2000,: - selectMethod=cursor vs selectMethod direct=?

In den Prozess der versucht zu helfen, ein app-dev-team mit der performance-Probleme auf einem SQL 2000 server (aus einer Reihe von Java-Anwendungen auf separaten app-Server), ich lief ein SQL-trace und entdeckt, dass alle Aufrufe der Datenbank sind voll von API-Servercursor Aussagen (von sp_cursorprepexec verwendet werden, sp_cursorfetch, sp_cursorclose).

Aussieht, sind Sie unter Angabe einiger Eigenschaften der Verbindungszeichenfolge, die erzwingen, dass die Verwendung von server-side-cursors, abrufen von nur 128 Zeilen von Daten zu einem Zeitpunkt: (Von http://msdn.microsoft.com/en-us/library/Aa172588)

Wenn die API-cursor-Parametern oder
Eigenschaften werden gesetzt, was andere
als die Standardwerte, die OLE DB
provider für SQL Server und SQL
Server-ODBC-Treiber verwenden Sie API-server
Cursor anstelle der Standard-Ergebnis
Sätze. Jeder Aufruf einer API-Funktion
holt Zeilen erzeugt
roundtrip zum server zum abrufen der
Zeilen aus der API-Servercursor.

UPDATE: Der connection-string bei der Ausgabe ist ein JDBC-connection-string parameter, selectMethod=cursor (die es ermöglicht, die server-side Cursor, die wir oben besprochen) gegen die alternative selectMethod=direct. Sie wurden mit selectMethod=cursor als Ihre standard-Verbindungszeichenfolge aus allen apps.

Aus meiner DBA-Perspektive, das ist einfach nur nervig (es Rauschen die Ablaufverfolgung mit nutzlosen junk), und (würde ich spekulieren) führen zu viele extra app-zu-SQL-server round-trips, die Verringerung der Gesamt-performance.

Sie offenbar testen, ändern (nur eines von über 60 verschiedenen app-verbindungen) zu selectMethod=direct aber erlebt einige Probleme (von denen ich habe keine details) und sind besorgt über die Anwendung brechen.

So, meine Fragen sind:

  • Kann mit selectMethod=cursor geringere Anwendungsleistung, wie ich versucht habe zu argumentieren? (durch die Erhöhung der Anzahl der erforderlichen Roundtrips auf einem SQL server, der bereits einen sehr hohen Anfragen/Sek)
  • Ist selectMethod= eine Anwendung-transparente Einstellung, die auf einer JDBC-Verbindung? Könnte diese brechen Ihre app, wenn wir es ändern?
  • Mehr in der Regel, wenn Sie verwenden sollten cursor vs direct?

Auch cross-posted auf SF.

BEARBEITEN: Erhalten die tatsächlichen technischen details, die garantieren, einen erheblichen Bearbeiten, um Titel, die Frage und die tags.

BEARBEITEN: Added bounty. Auch Hinzugefügt Kopfgeld auf die SF-Frage (diese Frage konzentriert sich auf das Verhalten der Anwendung, die SF-Frage konzentriert sich auf die SQL-Leistung.) Danke!!

  • Wenn ich mich Recht erinnere, hast du Recht. Dies scheint wie ein ServerFault Frage, wie viel als SO eine, obwohl. Sie würde wahrscheinlich smart zu Fragen, an sqlservercentral.com zu.
  • Ich habe erwähnt das es auf der #sqlhelp-tag auf twitter. Keine Bisse dort, entweder. Ich denke, die schlecht angesehen, auf den cross-post eine Frage die sich über mehrere SO Seiten, richtig?
  • Meine beste Vermutung wäre, dass Sie es versuchen sollten. Vielleicht haben Sie UnitTests, die Sie feuern können, die gegen die Datenbank mit den geänderten string (oder eine kleine test-Anwendung).
  • Ich verstehe nicht, warum es wäre, und Q ' s get cross-posted die ganze Zeit-vor allem, wenn Sie "moderiert" von einem Ort zum anderen, 2 Kopien bleiben. Wenn Sie gute Antworten auf eine Website, so sicher sein, um den link zurück zu den anderen (zu helfen, die künftigen Forscher).
InformationsquelleAutor BradC | 2010-09-01
Schreibe einen Kommentar