![]() |
Datenbank: Sybase SQL Anywhere • Version: 8.0.3 • Zugriff über: BDE / TQuery
BDE-Zwischenspeicherung umgehen ?
Hallo,
ich suche nach einer Möglichkeit, die Zwischenspeicherung der BDE, bzw. der BDE-Komponenten zu umgehen. Ich habe eine Tabelle mit über 40000 Datensätzen, die ich mit der TQuery-Komponente einmal komplett von oben nach unten durchlaufen lassen möchte. Dafür verwende ich die Methode First, eine while-Schleife die auf Eof prüft, sowie die Mehode Next. Benötigt wird nur der jeweils aktuelle Datensatz. Leider werden die bereits durchlaufenen Datensätze im Arbeitsspeicher zwischengespeichert. Wenn ich die Eigenschaft RequestLive auf True setze, werden ca. 10Sek. und etwa 150MB RAM benötigt (Der reine Datenbestand sind exportiert ca. 25MB). Wenn ich die Eigenschaft RequestLive dagegen auf False setze, oder CachedUpdates auf True setze, wird deutlich mehr Zeit und Speicher benötigt (häufig reicht dann der RAM nicht). Ich benötige jedoch nur den jeweils aktuellen Datensatz. Gibt es eine Möglichkeit, diese Zwischenspeicherung zu umgehen? Ich hab zwar nach Möglichkeiten und Alternativen gesucht, aber bisher nichts Passendes gefunden. Danke im Vorraus. |
Re: BDE-Zwischenspeicherung umgehen ?
Solange das DataSet offen ist bleiben die Daten IMHO im Speicher. Das Programm kann ja nicht wissen, dass du nicht doch irgendwann wieder auf den ersten Datensatz springen möchtest.
Langsam aber speicherschonender wäre, wenn du dir nur die 40.000 Primärschlüssel holst und dann jeden Datensatz einzeln lädst. Aber wenn ich recht überlege, wäre das wahrscheinlich ein Performance-Alptraum. |
Re: BDE-Zwischenspeicherung umgehen ?
Moin zusammen,
dann nimmt man den Mittelweg. Mach mehrere SQL Abfragen, wo der Schlüsselbereich eingegrenzt ist. Innerhalb diesr kleineren DataSets kannst Du dann Deine Verfahresweise mit Next und EOF anwenden. Und oder beschränke die Feldanzahl in der Query auf die Felder die unbedingt bearbeitet werden müssen, das spart Speicher und Lesezit über das Netz. Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz