Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Speicherfresser : TQuery und MSSQL

  Alt 30. Jan 2007, 17:43
Grundsätzlich funktionieren Abfragen so:
1.) der Client sendet seine SQL-Anweisung an den Server
2.) der Server führt die SQL-Anweisung aus
3.) wenn die SQL-Anweisung ein Resultset (alles was mit SELECT beginnt) hat, wird die komplette Datenmenge an den Client übertragen
4.) der Server ist fertig und der Client speichert das gesamte Resultset zwischen
Das nennt man "client seitigen Cursor"

Es gibt auch "serverseitige Cursor"
3.) der Server speichert das gesamte Resultset zwischen und gibt auf Anforderung immer nur Teile an den Client.
4.) wenn der Client das Resultset schliesst, darf der Server das Resultset freigeben
Wie man sieht, ist bei dieser Variante der Speicherbedarf vom Client auf den Server übergegangen.
Bei vielen Clients droht hier Serverüberlastung.

Wenn du also ein Speicherproblem auf dem Client hast, solltest du
1.) die Anzahl der Spalten reduzieren
2.) die Anzahl der Datensätze reduzieren
3.) Arbeit vom Client zur Server delegieren (Stored Procedures)
4.) Hardware aufrüsten
Andere Lösungen gibt es nicht.
Andreas
  Mit Zitat antworten Zitat