Peter Götz

25/01/2009 - 01:04 von Ulf Hansen | Report spam
Hallo Peter,

als ich mit Programmieren angefangen habe, hast Du mal in in diesem
Forum einem anderen User geschrieben, der àhnliche Probleme wie ich
hatte (nàmlich gar keine Ahnung), dass er adUseClient verwenden soll.
Ich habe das damals (so vor 6 Jahren?) einfach so übernommen. Wenn ich
mich recht erinnere, ging es bei ihm wie bei mir um eine Anwendung, die
nur auf einem PC laufen soll (ohne Netzwerkanbindung o. à.).
Nun habe ich herausgefunden, dass adUseServer viel viel schneller ist
und somit perfekt für mein Vorhaben (Übersetzungssoftware, bzw. Wörterbuch).

Warum hattest Du denn damals (falls Du Dich noch erinnerst) gleich auf
adUseClient bestanden?
Hattest Du übersehen, dass es um einen einzigen PC ging?

Herzliche Grüße
Ulf
 

Lesen sie die antworten

#1 Peter Fleischer
25/01/2009 - 09:51 | Warnen spam
"Ulf Hansen" schrieb im Newsbeitrag
news:

als ich mit Programmieren angefangen habe, hast Du mal in in diesem Forum
einem anderen User geschrieben, der àhnliche Probleme wie ich hatte
(nàmlich gar keine Ahnung), dass er adUseClient verwenden soll. Ich habe
das damals (so vor 6 Jahren?) einfach so übernommen. Wenn ich mich recht
erinnere, ging es bei ihm wie bei mir um eine Anwendung, die nur auf einem
PC laufen soll (ohne Netzwerkanbindung o. à.).
Nun habe ich herausgefunden, dass adUseServer viel viel schneller ist und
somit perfekt für mein Vorhaben (Übersetzungssoftware, bzw. Wörterbuch).

Warum hattest Du denn damals (falls Du Dich noch erinnerst) gleich auf
adUseClient bestanden?
Hattest Du übersehen, dass es um einen einzigen PC ging?



Hi Ulf,
ich bin zwar nicht peter Götz, aber auch schon seit fast 10 Jahren in dieser
NG aktiv.

Die Geschwindigkeitsdifferenzen, die du beobachtet hast, kann man nur im
Zusammenhang mit der konkreten Anwednung bewerten.

"adUseClient" bewirkt das Laden der für die Arbeit benötigten Datenmenge von
Datenbankserver in den Client. Navigiert wird dann mit einem clientseitigen
Cursor (Zeiger auf den aktuellen Datensatz im Client).

"adUseServer" bewirkt das Laden nur des Datensatzes in den Client, der
entsprechend Datensatzzeiger gerade benötigt wird = serverseitiger Cursor.
Zusàtzlich können auch die daneben gelegenen Datensàtze in den Client
geladen werden, wenn z.B. ein komplex gebundenes Steuerelement dies
erfordert (z.B. Grid).

Wenn du also mit deiner Abfrage eine große Datenmenge im Direktzugriff haben
willst, wird bei "adUseClient" diese große Datenmenge erst einmal vom
Datenbankserver in den Client geladen und kann dann für die Naviagtion
genutzt werden. Das kann u.U. sehr aufwàndig sein, viele Ressourcen belegen
und damit recht langsam werden.

Wenn du mit "adUseServer" arbeitest, wird bei jeder Navigation ein neuer
Datensatz vom Datenbankserver geladen und der vorher geladene Datensatz im
Client wird nicht mehr benötigt und dessen Ressourcen freigegeben. Diese
Arbeitsweise erfordert viele Ressourcen, um auf beiden Seiten (Client,
Datenbankserver) diese permanente Verbindung/Beziehung richtig zu verwalten.
Zusàtztlich kann eine langsame Verbindung zum Datenbankserver die Arbeit
entsprechend ausbremsen.

Bei der Arbeit einer Einplatzanwendung, wo sich der Datenbankserver auf dem
gleichen Rechner befindet, ist sowohl die Ressourcenbelastung bei
serverseitigem Cursor (adUseServer) als auch die Übertragungszeit sehr
gering. Wenn es um große Datenmengen geht, die die Datenbankabfrage liefert,
dann wird bei clientseitigen Cursor (adUseClient) diese Datenmenge erst
einaml in die Anwendung kopiert, was ggf. ein gewaltiger Aufwand sein kann.
Unter solchen Bedingungen kann die Arbeit mit einem clientseitiger Cursor
(adUseClient) viel langsamer sein als die Arbeit mit einem serverseitigen
Cursor (adUseServer).

Bei konsequenter Nutzung nur kleiner Datenmengen in den Abfragen
(Where-Klausel) kann der Unterschied in der Verarbeitung in der praktischen
Arbeit ohne Bedeutung sein.

Viele Grüsse
Peter

Ähnliche fragen