Performance, Programmierung

Verwendung von Remote-Prozeduren

Die Ausführung von Prozeduren im Hintergrund einer Anwendung wird meistens per RmtCall()-Befehl an den Datenbankserver delegiert. Diese Methode erfordert zwar zunächst wenig Aufwand, hat aber auch Nachteile. Für die meisten Anwendungsfälle ist der Einsatz des SOA-Service die bessere Alternative.


Per RmtCall() gestartete Prozeduren werden innerhalb des Datenbankprozesses durchgeführt. Dabei wird keine TCP/IP-Verbindung mehr benötigt, der Datenzugriff ist daher schneller als bei einem Clientprozess. Allerdings kann die Prozedurausführung die Leistung und im ungünstigen Fall auch die Stabilität des Datenbankprozesses negativ beeinflussen. Ein übermäßiger Resourcenverbrauch oder auch Programmierfehler können zu Performance-Problemen führen oder das Schließen der Datenbank verhindern. Zudem hat der Client nach dem Start der Prozedur keine direkten Kontrollmöglichkeiten mehr. Ein weiterer Nachteil von RmtCall() liegt im reduzierten Befehlsumfang, etliche Prozedurbefehle sind innnerhalb des Datenbankservers nicht verfügbar.

Ein socketbasierter SOA-Service kann auf derselben Maschine wie der Datenbankserver laufen und vermeidet die Nachteile von RmtCall(). Datensatzoperationen sind zwar etwas langsamer, dafür sind aber mehr Befehle ausführbar (bespielsweise für Druckfunktionen). Insbesondere durch die Verwendung der Job-Funktionen innerhalb der SOA-Anwendung kann ein Leistungsspektrum erreicht werden, das innerhalb des Datenbankprozesses nicht realisierbar ist.

Da Selektionen mit der Option _SelServer direkt vom Server durchgeführt werden, sollte RmtCall() am besten nur dann verwendet werden, wenn es bei einer umfangreichen Datensatzverarbeitung auf maximale Performance ankommt.

1 Kommentar

1 Kommentar zu “Verwendung von Remote-Prozeduren”

Kommentar abgeben