Client- / ServerSide-Cursor Info's ???

27/09/2007 - 18:36 von Hubert Ball | Report spam
Hallo,

woher kann ich denn Informationen über die Unterschiede zwischen Client-/
und Serverside Cursor beziehen?

Ich erstelle gerade eine Anwendung, die sowohl im LAN als auch über's
Internet auf einen SQL-Server zugreift. In diesem Zusammenhang würden mich
die Unterschiede im Bezug auf die für den User ersichtliche Performance.

Folgende Informationen wàren für mich interessant:



LAN WAN

ClientSide
ServerSide ClientSide ServerSide

Tabelle lesen +/- ?
+/- ? +/- ? +/- ?

kpl. Tabelle schreiben +/- ?
+/- ? +/- ? +/- ?

einzelner Datensatz schreiben +/- ?
+/- ? +/- ? +/- ?



Was geschieht denn genau bei den unterschiedlichen Cursor-Arten beim lesen
und schreiben im Bezug auf die übertragene Datenmenge?

Ich hoffe es kann mich jemand von Euch erleuchten ?!?


Gruß
Hubert
 

Lesen sie die antworten

#1 Elmar Boye
28/09/2007 - 09:37 | Warnen spam
Hallo Hubert,

Hubert Ball schrieb ...
woher kann ich denn Informationen über die Unterschiede zwischen Client-/
und Serverside Cursor beziehen?




Die Grundsàtze werden in den jeweiligen aus der Dokumentation
beschrieben. In der SQL Server Online Dokumentation wàre das
CREATE CURSOR:
http://msdn2.microsoft.com/de-de/li...80169.aspx
und auch:
http://msdn2.microsoft.com/en-us/library/aa905893(SQL.80).aspx

sowie für Ole DB der dort integrierte Cursor Service
http://msdn2.microsoft.com/en-us/li...75138.aspx

Ich erstelle gerade eine Anwendung, die sowohl im LAN als auch
über's Internet auf einen SQL-Server zugreift.



Grundsàtzlich sind clientseitige Cursor besser, da sie weniger Last
erzeugen, da die Daten einmalig an den Client übermittelt werden.
Dabei wird beim Abfragen ein FAST_FORWARD/READ_ONLY Cursor
(was eigentlich gar kein Cursor ist) verwendet. Und Änderungen
werden durch die Cursor Engine in Form von SQL Anweisungen
übertragen.

Serverseitige Cursor verwenden spezielle API Prozeduren, die
schnell mehr Netzwerkverkehr erzeugen, weil sie die Daten
in Hàppchen abrufen.

Dort gilt es um so mehr, den "kleinsten" Cursortyp zu verwenden.
Bei adOpenForwardOnly/adLockReadOnly hat man quasi das gleiche
Verhalten wie beim Clientseitigen Cursor, kann aber auch nicht
aktualisieren (bzw. muss die SQL Anweisungen selbst bauen,
was ansonsten die Cursor-Engine macht).
Im Falle von .NET Providern ist das immer der Fall.

Das teuerste sind nach Keyset Cursor die dynamischen
Cursor, da dabei permanent der Server abgefragt werden
muss (deswegen möglichst vermeiden).

In diesem Zusammenhang würden mich die Unterschiede im Bezug
auf die für den User ersichtliche Performance.

Folgende Informationen wàren für mich interessant:

[Tabelle gesnippt]



da gibt kein eindeutige +/- Zuordnung.
Und was den Cursortyp angeht ist WAN oder LAN ist letztendlich
irrelevant, es gilt im WAN nur mehr darauf zu achten, dass die
Anwendung nicht unnötig viele Daten abruft -> Wer unbedacht
ein grosse Tabelle ohne limitierende Filter abruft, wird immer eine
unbefriedigende "User Experience" haben.

Gruss
Elmar

Ähnliche fragen