Abhilfe bei oben beschiebenen Problem brachte, den Parameter "CacheSize" hoch zu setzen. In meinem Fall auf 15000. Offensichtlich ist dadurch weniger Overhead in der Organisation des Arbeitsspeichers
Announcement
Collapse
No announcement yet.
DB Performance
Collapse
X
-
Hallo,
da bei einem server-seitigen Cursor der Client einen konkreten Datensatz erst bei Bedarf abholt, ist die Netzwerkbelastung durch die wechselseitigen Client-Server-Aufrufe entsprechend höher. Über die Eigenschaft <b>CacheSize</b> kann ADO einen effektiveren Puffermechanismus verwenden, indem mehr als 1 Datensatz zur gleichen Zeit vom Server abgefordert wird.
Wird das RecordSet mit dem Wert <b>adFilterFetchedRecords</b> gefiltert, so zeigt es nur die Anzahl von Datensätzen an, die in den von CacheSize definierten Puffer passen
Comment
-
Hallo,
nein - der Filter wird erst nach dem Aktivieren des RecordSets aktiviert:
<pre>
uses ADOInt;
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOConnection1 do
begin
CursorLocation := clUseServer;
Connected := True;
end;
with ADODataSet1 do
begin
CursorLocation := clUseServer;
CursorType := ctOpenForwardOnly;
LockType := ltReadOnly;
CacheSize := 10;
Active := True;
RecordSet.Filter := adFilterFetchedRecords;
ShowMessage(IntToStr(RecordSet.RecordCount));
end;
end;
</pre>
Comment
Comment