Lösung: Die verlorene Zeit

Die Antwort lautet Netzwerklatenz.

Vielen Dank an meine Kommentatoren, die natürlich total richtig liegen. Da die SQL Befehle schnell genug sind, muss das Problem an anderer Stelle liegen. Das vermeintliche idle wait event Sql*net Message from client hätte im trace auffallen sollen.

Ein Blick ins trace Resultat bestätigte die Vermutung. Von Craig Shallahammer hatte ich gelernt, dass man die Latenzzeit im Netzwerk mit einem einfachen Ping testen kann. Unsere Versuche zeigten schnell, dass man die Abweichung in the Laufzeiten ziemlich gut mit Anzahl Datenbankaufrufe * Zeit pro Ping * 2 berechnen konnte.

Daraus habe ich geschlossen, dass pro Datenbankaufruf zwei Netzwerktransfers stattfinden. Ich vermute dass der zweite ein Aknowledge ist, habe das aber nie überprüft.

Um das Problem kurzfristig zu lösen musste man als die Netzwerklatenz verkürzen. Zur damaligen Zeit war technisch nur Citrix als Lösung möglich. Langfristig war es erforderlich (um die Citrix Lizenz ein zu sparen) die Anzahl der Datenbankaufrufe zu reduzieren, in dem an mehrere Befehle zusammen fasst. (Wie man es von Anfang an hätte tun sollen.)

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s