Announcement

Collapse
No announcement yet.

hoher Arbeitspeicherbedarf bei großen datenmengen im TDBGrid

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • hoher Arbeitspeicherbedarf bei großen datenmengen im TDBGrid

    Hallo,
    ich habe ein C++Builder Projekt mit einer angebundenen Firebird Datenbank.
    Im Projekt wird ein TDBGrid auf eine Tabelle dargestellt. Die Tabelle besteht aus ca. 80 Datenfeldern (überwiegend Typ FLOAT)
    Die Datenbank enthält z.Zt. 500.000 Datensätze Tendenz schnell wachsend.

    Wenn ich jetzt im C++Projekt schnell durch die Daten scrolle bzw. Scrollbalken ganz nach unten schiebe bekomme ich die Fehlermeldung "Zu wendig Arbeitsspeicher".
    Idealerweise sollte ein TDBGrid wie ein Fenster auf einen Datenbereich funktionieren. D.h. Speicherbereich vor den angezeigten Daten freigeben. Dies ist offensichtlich nicht so.
    Ich habe als vorübergehende Lösung im TDBDataSet->SelectSQL ein "select first 1000 * from DATEN order by zeit desc" die Daten beschränkt.

    Kann dieses Problem Arbeitsspeichereffizienter programmiert werden?
    Ist das eine Einstellungssache bzw. Konfigurationsproblem?

  • #2
    Solange du ein Grid dran hängen hast benötigst du ein Dataset durch welche man vorwärts und rückwärts scrollen kann.
    Willst du nur ein "Fenster" auf den Datenbestand haben musst du schauen ob du ein alternatives Grid nehmen kannst da sowas implementiert oder sebst "Hand anlegen".
    Wir machen das indem wir nur die Primärschlüssel abfragen und dann zur anzeige jeweils den nötigen Datensatz komplett holen.

    Aber die Grundfrage ist: Wer will/kann effektiv durch 500.000 Datensätze navigieren. Der "Top 1000" Ansatz ist für 95% der Fälle sinnvoll. Wenn der User dann auch noch Filterkriterien angeben kann hast du eine Lösung die fast immer reicht.

    Comment

    Working...
    X