AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Kodieren gegen großes Datenvolumen (Datendatei > 2 GB, > 15 Mio. DS)
Thema durchsuchen
Ansicht
Themen-Optionen

Kodieren gegen großes Datenvolumen (Datendatei > 2 GB, > 15 Mio. DS)

Ein Thema von Harry Stahl · begonnen am 5. Apr 2019 · letzter Beitrag vom 17. Apr 2019
Antwort Antwort
Seite 3 von 3     123   
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#21

AW: Kodieren gegen großes Datenvolumen (Datendatei > 2 GB, > 15 Mio. DS)

  Alt 17. Apr 2019, 10:48
Soweit habe ich das dann tatsächlich hinbekommen, dass ich in der 32-Bit-Version die 2,1 Mio. DS importieren und anzeigen lassen kann (schnell ist das Programm aber dann nicht mehr, in der allgemeinen Anzeige schon, aber in der Filterung von DS nicht, dazu später).
Es ist nicht sinnvoll so viele Datensätze im Arbeitsspeicher zu halten.
Es gibt bessere Konzepte z.B.:

Vorbereitung:
- temporäre Datenbank erzeugen
- Tabelle mit den Spalten der CSV-Datei anlegen
- CSV-Datei in die Tabelle einlesen
- jeweils einen Index auf Spalten setzen, die gefiltert oder sortiert werden können
Anzeige:
- je nach Filter/Sortierung die SQL-Anfrage anpassen
- die Anzahl der anzuzeigenden Datensätze ermitteln und Anzeige vorbereiten (z.B. TDrawGrid.RowCount)
- nur die Datenzeilen lesen, die tatsächlich gerade im Fenster sichtbar sind (z.B. Zeile 1- 150) (Daten für die Anzeige bereitstellen z.B. TDrawGrid.OnGetEditText)
- beim Scrollen die nicht mehr sichtbaren Daten aus dem Speicher entfernen und die sichtbaren Daten nachladen (z.B. Zeile 100 - 250)
Import:
- Daten auf Datenbankebene verarbeiten (SQL-Befehle) oder Zeile für Zeile

Zur Erinnerung: Eine 32-Bit-Version kann nicht mehr als 2 GB Arbeitsspeicher in Anspruch nehmen.
Das ist nicht ganz richtig. Mit diesem Flag sind je nach Betriebsystemumgebung bis zu 4 GB Arbeitsspeicher direkt adressierbar.
Delphi-Quellcode:
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}

{$R *.res}

begin
  Application.Initialize;
{...}
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 21:50 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