AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi BDE-Zwischenspeicherung umgehen ?
Thema durchsuchen
Ansicht
Themen-Optionen

BDE-Zwischenspeicherung umgehen ?

Offene Frage von "AlphaBug"
Ein Thema von AlphaBug · begonnen am 11. Apr 2006 · letzter Beitrag vom 11. Apr 2006
Antwort Antwort
AlphaBug

Registriert seit: 2. Mär 2004
Ort: hinterm Transistor 246 gleich links
46 Beiträge
 
Delphi 6 Enterprise
 
#1

BDE-Zwischenspeicherung umgehen ?

  Alt 11. Apr 2006, 10:44
Datenbank: Sybase SQL Anywhere • Version: 8.0.3 • Zugriff über: BDE / TQuery
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.
Delphi 4ever !
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

Re: BDE-Zwischenspeicherung umgehen ?

  Alt 11. Apr 2006, 10:53
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.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#3

Re: BDE-Zwischenspeicherung umgehen ?

  Alt 11. Apr 2006, 11:10
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
Martin Schaefer
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz