Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage von großen Datenmengen (https://www.delphipraxis.net/172433-abfrage-von-grossen-datenmengen.html)

dARKeAGLE 3. Jan 2013 11:38

Datenbank: MySQL • Version: 5.5.28 • Zugriff über: Devart DBExpress

Abfrage von großen Datenmengen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen,

sobald ich eine Abfrage starte, welche mehr als ca. 20 000 Datensätze zurückliefert läuft mein Arbeitsspeicher voll und die Exception "Nicht genügend Speicher für diese Operation" wird ausgegeben.

Des Weiteren habe ich noch eine Master/Detail-Beziehung

Der Master (Mandant) hat 8 Datensätze, je nach Master gibt es unterschiedliche Buchungen(Detail).
Code:
+-----------+-------------------+
| Mandant   |  Anzahl Buchungen |
+-----------+-------------------+
|!01        |  11000            |
|!02        |  30000            |
|!03        |  40000            |
|!04        |  523624           |
|!05        |  10000            |
|!06        |  10000            |
|!5         |  10000            |
+-----------+-------------------+
Sobald ich die innerhalb des Masters scrolle, ändert sich ja auch der Details (was gewünscht ist), doch bei einer größeren Anzahl kommt die obengenannte exeception.

Hat jemand eventuell eine Idee wie das Problem gelöst werden kann.


Viele Grüße und vielen Dank im Voraus

Christian


P.S.: Das Projekt sowie ein Backup der MySQL-Daten sind angehängt

Bernhard Geyer 3. Jan 2013 12:34

AW: Abfrage von großen Datenmengen
 
20.000 Datensätze. Hier die Frage wieder: Wer schaut sich dies direkt an?

Mit welchen Compilereinstellungen ist die Anwendung erstellt? Mit maximalen Debug-Infos?

dARKeAGLE 3. Jan 2013 12:43

AW: Abfrage von großen Datenmengen
 
Also 20.000 Datensätze ist noch das kleinste, aber wer des anschauen will keine Ahnung. Ist glaub für ein komplettes Geschäftsjahr.

Ja die Anwendung wurde mit den maximalen Debug-Infos kompiliert. Auch den Debug-DCUs.

Muss ich es irgendwie anders kompilieren?

Viele Grüße

Christian

p80286 3. Jan 2013 12:55

AW: Abfrage von großen Datenmengen
 
zum einen, wäre es nicht sinnvoller gleich eine Datei als Ausgabe zu generieren? (Excel)
Ohne Debug-Info ist die Exe etwas kleiner und man etwas mehr Platz.

Ggf. wäre es sinnvoll einen readonly-cursor zu verwenden (falls definierbar) oder den Cursor auf dem Server zu verwenden (falls es geht)

Gruß
K-H

stahli 3. Jan 2013 13:03

AW: Abfrage von großen Datenmengen
 
Verwendest Du ClientDataSets?
Dann werden alle Abfragedaten darin (im Speicher) verwaltet.
Insofern eignet sich DBExpress nicht unbedingt für solche größeren Rückgabemengen von Abfragen.

(soweit meine Einschätzung als DB-Laie)

dARKeAGLE 3. Jan 2013 13:09

AW: Abfrage von großen Datenmengen
 
Jein. Ich nutze zwei TSimpleDataSet und eine TSQLConnection mit dem Devart Treiber MySQL Direct. Das TSimpleDataSet erbt ja vom TCustomClientDataSet.

Gibt es keine Komponenten für Read-Only zugriffe, da ich die Daten NUR lesen will und nicht wieder wo anderes hin speichere oder manupuliere möchte.


Zitat:

Zitat von p80286 (Beitrag 1197469)
zum einen, wäre es nicht sinnvoller gleich eine Datei als Ausgabe zu generieren? (Excel)
Ohne Debug-Info ist die Exe etwas kleiner und man etwas mehr Platz.

Ggf. wäre es sinnvoll einen readonly-cursor zu verwenden (falls definierbar) oder den Cursor auf dem Server zu verwenden (falls es geht)

Gruß
K-H

Also ohne die Debug-Informationen bekomme ich leider auch nicht mehr Datensätze über die Leitung.

Grüße

p80286 3. Jan 2013 13:36

AW: Abfrage von großen Datenmengen
 
Zitat:

Zitat von dARKeAGLE (Beitrag 1197471)
Jein. Ich nutze zwei TSimpleDataSet und eine TSQLConnection mit dem Devart Treiber MySQL Direct.

Du nutzt also keine query um nur die gewünschten Daten von der DB zu holen?

Gruß
K-H

dARKeAGLE 3. Jan 2013 13:37

AW: Abfrage von großen Datenmengen
 
Wenn du als Query eine TSQLQuery meinst, dann nicht.

Sorry dass ich gerade nicht verstehe was du meinst. :)

Morphie 3. Jan 2013 13:44

AW: Abfrage von großen Datenmengen
 
Ich wollte mir dein Projekt mal ansehen, aber ich glaube dein MySQL Backup ist nicht vollständig, kann das sein?
In der Datei stehen nur zwei Tabellen: Buchungen und email

Im Quellcode verweist du aber auf die Tabelle Mandant?!

Bernhard Geyer 3. Jan 2013 13:47

AW: Abfrage von großen Datenmengen
 
Zitat:

Zitat von dARKeAGLE (Beitrag 1197466)
Ja die Anwendung wurde mit den maximalen Debug-Infos kompiliert. Auch den Debug-DCUs.

Muss ich es irgendwie anders kompilieren?

Probiers mal ohne jegliche Debug-Infos. Diese blähen Teilweise den benötigen Speicherbedarf aufs 5-10fache auf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.
Seite 1 von 4  1 23     Letzte »    

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