Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#5

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 31. Mär 2014, 09:55
Ich kann das so nicht bestätigen, was aber durchaus an der ODBC Treiber Installation von SAGE KHK New Classic Line liegen kann.
... was ich wiederum mangels "SAGE KHK New Classic Line" nicht beurteilen kann ...

Ich habe in der ADOTable Komponente einmal sowohl MaxRecords als auch CachSize auf 100 gesetzt. Dann bin ich die Tabelle in einer Schleife durchlaufen und habe alle ca. 5400 Datensätze lesen können. In sofern wird MaxRecords hier nicht als wirklich harte Grenze interpretiert.
Eine Schleife benötigte ich bislang nicht, um Datensätze via TAdoTable zu lesen. Gewöhnlich setzt man in TAdoTable doch einfach die Connection und wählt dann eine der verfügbaren Tabellen aus. Ich habe das hier mit einer Sichten-Tabelle (View) im SQL-Server (Treiber: SQLOLEDB.1) unter Delphi 2009 getestet. Wenn ich MaxRecords auf 5 stelle, erhalte ich nur die ersten 5 Records und komme da auch nicht an weitere Records ran, egal was ich anstelle.

Könntest du das mit der Schleife mal etwas näher erläutern?

Mein Problem ist, dass eine Anwendung beim Kunden seit der Umstellung auf die neue New Classic Line beim Lesen der Kundetabelle einfach mit dem Fehler "Out of memory" hängen bleibt. Das passiert auf meinem älteren Rechner nicht. Beide nutzen Win 7 64 Bit. Es scheint so zu sein, dass beim Aufruf von RecordCount die gesamte Tabelle in den Speicher geladen wird, bzw. das System versucht diese zu laden. Ich habe deshalb RecordCount durch eine ADO SQL Abfrage an den Server ersetzt. Außerdem habe ich CacheSize auf 100 gesetzt und MaxRecords jetzt wieder von 100 auf 0 zurückgesetzt.
Scheint so, als ob es ich um sehr große Tabellen handelt, eventuell mit großen Blob-Feldern? Defaultmäßig steht CacheSize auf 1, was bedeutet, daß bei Anforderung immer nur ein weiterer Datensatz geholt (fetched) wird. Möglicherweise hilft es in deinem Fall, CacheSize auf einem eher niedrigen Wert zu belassen statt gleich 100 Datensätze auf einmal in den Cache (Speicher) zu laden.

Die Ado-Komponenten scheinen mir, der ich durch FibPlus und IbDac verwöhnt bin, doch eher unkomfortabel zu sein. Dessen ungeachtet kann ich selbst auch nicht immer auf Ado verzichten, weil mir das Geld für bessere, modernere Kompos fehlt. Beim nächsten finanziellen Überschuß schaffe ich mir UniDac an, damit kann ich dann wohl die meisten Datenbanken abdecken.
  Mit Zitat antworten Zitat