AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Abfrage von großen Datenmengen
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage von großen Datenmengen

Ein Thema von dARKeAGLE · begonnen am 3. Jan 2013 · letzter Beitrag vom 4. Jan 2013
Antwort Antwort
Seite 2 von 4     12 34      
dARKeAGLE

Registriert seit: 17. Jun 2011
Ort: Laupheim
13 Beiträge
 
Delphi XE Professional
 
#11

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 14:48
Sorry habe mich beim Backup vertan. Daher im Anhang nun das Backup der Tabelle "Mandant".


Man beachte es nur Test-Daten die ich mir erzeugt habe. Daher steht nichts sinnvollen in den Datensätzen
Angehängte Dateien
Dateityp: zip Mandant.zip (702 Bytes, 4x aufgerufen)
Christian
  Mit Zitat antworten Zitat
dARKeAGLE

Registriert seit: 17. Jun 2011
Ort: Laupheim
13 Beiträge
 
Delphi XE Professional
 
#12

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 14:52
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.
Habe es gerade ausprobiert, im Anhang meine Einstellungen.
Leider waren es nur ca. 30MB, was reduziert wurde. Aber bei 1,7 GB ist das nur ein Tropfen auf den heißen Stein.

Grüße
Miniaturansicht angehängter Grafiken
debugeinstellungen.png  
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:01
Schon mal andere MySQL-Version probiert?
Hatte schon den Fall das eine MySQL-Version verpfuscht war und falsche infos zurück geliefert hatte so das auf Clientseite einiges Falsch gelaufen ist

Hast du blob-Felder?
Bei Oracle war/ist es so das diese (auch ohne Inhalt) im Instant-Client mit sehr viel "luft" (Speichertechnisch) auf Clientseite verwaltet werden.

Verwendest du libmysql.dll oder den direkten Modus der Komponenten?
Probier mal den jeweilig anderen Modus aus.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#14

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:07
Also ich kann das Problem hier jetzt nachvollziehen... Spontan würde ich sagen es liegt an den (komischen) dbExpress-Zugriffskomponenten...

Habt ihr die schon gekauft, oder seid ihr noch am testen?
Ich rate dir, die Zugriffskomponenten zu wechseln und auf TQuery zu setzen.

http://www.devart.com/mydac/ordering.html
Kostet ja im Prinzip in der kleinsten Ausbaustufe genau so viel. Damit wirst du wohl viel weniger Probleme haben...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#15

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:17
Jein. Ich nutze zwei TSimpleDataSet und eine TSQLConnection mit dem Devart Treiber MySQL Direct. Das TSimpleDataSet erbt ja vom TCustomClientDataSet.
Das Problem ist das TSimpleDataSet. Das ist, wie du schon bemerkt hast, ein TCustomClientDataSet. Somit hat es auch genau dieselben Einschränkungen. Es erspart dir lediglich ein SQLDataSet und einen DataSetProvider, die du andernfalls selbst verdrahten müsstest.

Das Simple-/ClientDataSet lädt stndardmäßig das komplette Abfrageergebnis in den Hauptspeicher und da knallt es natürlich ab einer gewissen Menge.

Du kannst also entweder deine Abfrage mit einer sinnvollen WHERE-Klausel verkleinern, was aber ohne Kenntnis möglicher Kriterien schwierig wird, oder (besser) du verzichtest auf das Grid und verwendest lediglich ein TSQLDataSet (das ist unidirektional und somit nicht in einem Grid darstellbar). Da sich aber wohl kaum jemand die ganzen 20000 Datensätze in dem Grid anschauen will, sollte das zu verschmerzen sein.

Wenn es nicht ohne das Grid geht, musst du feststellen, nach welchen Kriterien die Abfrage eingeschränkt werden kann (z.B. Jahr/Monat der Buchungen oder so). Dann zuerst das Kriterium eingeben und dann erst die Abfrage öffnen.

Vergiss alles bezüglich der Debug-Infos, das Problem ist die Menge der abgefragten Daten.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:30
...verwendest lediglich ein TSQLDataSet (das ist unidirektional und somit nicht in einem Grid darstellbar).
Warum sollte man es nicht in einem TStringgrid darstellen können?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#17

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:32
Ihm geht dabei aber dann doch die Master / Detail Navigation flöten, oder?
Das Problem hätte er wie gesagt mit den gleichteuren MyDAC-Komponenten von DevArt nicht...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:39
(Bezugnahme auf Uwe´s Beitrag)
... oder eine Alternative zum DBExpress wählen.

Ich kenne mich im Detail zwar nicht aus und WILL NICHT die BDE empfehlen, aber unter BDE wurden nur die Datensätze in das DBGrid geholt, die auch dargestellt wurden.

Ich weiß nicht, welche Möglichkeiten sich da aktuell anbieten.

Bei DBExpress zu bleiben ist m.E. vor allem sinnvoll, wenn man eine spätere Skalierung auf DataSnap für möglich hält. So ließe sich das Projekt (m.E.) am einfachsten auf DataSnap umstellen.
Ist das ausgeschlossen und sind große bidirektionale Datenmengen im Spiel ist BDExpress möglichweise nicht erste Wahl.

(meine aktuelle Einschätzung)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 3. Jan 2013 um 15:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:44
Das Simple-/ClientDataSet lädt stndardmäßig das komplette Abfrageergebnis in den Hauptspeicher und da knallt es natürlich ab einer gewissen Menge.
Bei MySQL ist das egal da es hier keine serverseitigen Curser gibt.

Vergiss alles bezüglich der Debug-Infos, das Problem ist die Menge der abgefragten Daten.
20.000 Datensätze sollten aber (wenn keine größeren Blobs) beteiligt sind selbst in einem 32-Bit Prozess noch keine Probleme darstellen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: Abfrage von großen Datenmengen

  Alt 3. Jan 2013, 15:45
Ich kenne mich im Detail zwar nicht aus und WILL NICHT die BDE empfehlen, aber unter BDE wurden nur die Datensätze in das DBGrid geholt, die auch dargestellt wurden.
Nützt dir aber nur was wenn die Datenbank Serverseitige Curser unterstützt. Und das gibt es bei MySQL nicht. Die DevArt-Kompos können zwar sowas simulieren indem einfach die Datensätze nicht abgeholt werden, führt aber AFAIk dazu das hierfür eine eigenen Connection aufgebaut wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 18:01 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