![]() |
AW: FireDAC Query Speicher freigeben
Zitat:
Hatte auch mal eine Komponente deren Verhalten war: "Uh, da kommt bein Memo/Blob-Feld, schnell mal ein paar MB vorsichtshalber reservieren..." |
AW: FireDAC Query Speicher freigeben
Hallo,
dazu lese ich folgendes. fmAll – Alle Rowsets werden automatisch direkt nach Ausführung der SQL-Anweisung abgerufen. Dies entspricht dem Aufruf der Methode FetchAll. Hinweis: Nicht alle DBMSs unterstützen das Abrufen von Rowsets. FireDAC kann dies aber zulasten der Geschwindigkeit emulieren. Emuliertes Abrufen von Rowsets führt zu einer Geschwindigkeitsreduktion von 50 % im Vergleich zum tatsächlichen Abrufen. Also ja, könnte am fmAll liegen. |
AW: FireDAC Query Speicher freigeben
Zitat:
|
AW: FireDAC Query Speicher freigeben
@Der schöne Günther:
Zitat:
|
AW: FireDAC Query Speicher freigeben
Ich habe in der Versionsverwaltung meines Vertrauens zwei Dinge gefunden:
Zitat:
und Zitat:
Delphi-Quellcode:
+ FetchOptions.AssignedValues = [evRecsSkip, evRecsMax]
+ FetchOptions.RecsSkip = 0 + FetchOptions.RecsMax = 100 |
AW: FireDAC Query Speicher freigeben
Zitat:
Das erklärt aber nicht, warum eine Query, die einen einzigen Datensatz zurückliefert, über 1 GB Speicher benötigt. Daher mein Vorschlag, die Query isoliert außerhalb des Programms bzw. in einem Testprogramm auszuführen. Entweder braucht sie dort auch diesen Speicher, dann muss man sehen, welche Felder das verursachen. Ist der Speicherverbrauch der Query selbst aber deutlich geringer, liegt das Problem innerhalb des Programms und man kann dann sukzessiv die übrige Funktionalität einbinden, bis der Auslöser für den enormen Speicherverbrauch gefunden ist. |
AW: FireDAC Query Speicher freigeben
Zitat:
Lösung: Die Form hat eine Datenmenge geöffnet, ohne WHERE, die NICHTS dieser Form zutun hatte. Die Datenmenge Tabelle Mail mit 35000 Datensätzen und reichlich großen Feldern und Blobs. (Ich tippe auf Copy/Paste Fehler meines Vorgängers) Das war aber so im Code versteckt...:? Nun haben wir mit 3500 Datensätzen in der Hauptdatenmenge (300 Felder) 450MB... Damit kann ich leben. :zwinker: Sorry, das hatte ich nicht auf dem Schirm. :oops: Danke an Alle. :kiss: |
AW: FireDAC Query Speicher freigeben
Zitat:
|
AW: FireDAC Query Speicher freigeben
...da sieht man man wieder. Ich hätte in der Schule besser aufpassen sollen. :oops:
Zu meiner Verteidigung:
Delphi-Quellcode:
...da kann man so etwas mal übersehen. 8-)
if NOT(DMED.FDQBelKopf.Active) then
DMED.FDQBelKopf.open(); if NOT(DMED.FDQBelPos.Active) then DMED.FDQBelPos.open(); if NOT(DMED.FDQBelArt.Active) then DMED.FDQBelArt.open(); if NOT(DMED.FDQVorgang.Active) then DMED.FDQVorgang.open(); if NOT(DMED.FDQTermin.Active) then DMED.FDQTermin.open(); if NOT(DMED.FDQAdr.Active) then DMED.FDQAdr.open(); if NOT(DMED.FDQEMail.Active) then DMED.FDQEMail.open(); // die hier if NOT(DMED.FDQTeil.Active) then DMED.FDQTeil.open(); if NOT(DMED.FDQBelStatus.Active) then DMED.FDQBelStatus.open(); if NOT(DMED.FDQZahlung.Active) then DMED.FDQZahlung.open(); if NOT(DMLUP.FDQDatevPlus.Active) then DMLUP.FDQDatevPlus.open(); if NOT(DMLUP.FDQDatevMinus.Active) then DMLUP.FDQDatevMinus.open(); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz