Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FireDAC Query Speicher freigeben (https://www.delphipraxis.net/197016-firedac-query-speicher-freigeben.html)

haentschman 10. Jul 2018 16:14

Datenbank: MSSQL • Version: 2012 • Zugriff über: FireDAC

FireDAC Query Speicher freigeben
 
Hallöle...:P

Gegeben:
FDQuery auf einem Datamodul mit ca. 300 im Feldeditor eingetragenen Feldern. :?

Auch wenn ich die Query (Resultset mit ca. 500MB) schließe, habe ich nach dem Open (neues SQL mit Parametern) eines Resultsets mit keinem Datensatz keine Verringerung des Arbeitsspeichers... :shock:

Wie kann ich die Query wirklich leeren? (Speicher) :roll:

Uwe Raabe 10. Jul 2018 16:17

AW: FireDAC Query Speicher freigeben
 
Zitat:

Zitat von haentschman (Beitrag 1406874)
Auch wenn ich die Query (Resultset mit ca. 500MB) schließe, habe ich nach dem Open (neues SQL mit Parametern) eines Resultsets mit keinem Datensatz keine Verringerung des Arbeitsspeichers... :shock:

Wie kann ich die Query wirklich leeren?

Die Query ist dann schon leer. Das bedeutet aber nicht, daß der Arbeitsspeicher wieder freigegeben wird (zumindest nicht so, daß Windows das merkt).

Wird denn der Arbeitsspeicher größer, wenn du die Query danach wieder füllst?

Bernhard Geyer 10. Jul 2018 16:25

AW: FireDAC Query Speicher freigeben
 
Zitat:

Zitat von haentschman (Beitrag 1406874)
... keine Verringerung des Arbeitsspeichers...

Nach Windows Taskmanager oder wenn du den Delphi-Speichermanager fragst?

haentschman 10. Jul 2018 16:33

AW: FireDAC Query Speicher freigeben
 
Hallo Uwe...

Langsam verstehe ich die Welt nicht mehr. Ich habe das Statement so manipuliert, daß beim Start max. 10 Datensätze abgerufen werden... was macht der Speicher?...läuft auf 1.2GB :? Gefühlt macht er aus der Query eine Tabelle wo die where Bedingung ignoriert wird. Kann das mit fmAll zusammenhängen?

Zu deiner Frage: Bleibt stabil.

Zitat:

Nach Windows Taskmanager
...ja

Uwe Raabe 10. Jul 2018 16:40

AW: FireDAC Query Speicher freigeben
 
Zitat:

Zitat von haentschman (Beitrag 1406878)
Ich habe das Statement so manipuliert, daß beim Start max. 10 Datensätze abgerufen werden... was macht der Speicher?...läuft auf 1.2GB :? Gefühlt macht er aus der Query eine Tabelle wo die where Bedingung ignoriert wird. Kann das mit fmAll zusammenhängen?

Was passiert denn, wenn du die Query in der IDE im Query-Editor von FireDAC abschickst?

haentschman 10. Jul 2018 16:56

AW: FireDAC Query Speicher freigeben
 
...ich habe keine Verbindung im Editor...habe ich noch nie gemocht. :?

Code:
SELECT DatumBeleg, *
  FROM [Bla].[dbo].[Blubb]
  where AddDate BETWEEN DATEADD([day], -10, GETDATE()) AND (GETDATE())
...1 Datensatz (1,1GB Speicher)

Code:
SELECT DatumBeleg, *
  FROM [Bla].[dbo].[Blubb]
  where AddDate BETWEEN DATEADD([day], -30, GETDATE()) AND (GETDATE())
...3450 Datensätze (1,2GB Speicher)

:gruebel:

Uwe Raabe 10. Jul 2018 17:03

AW: FireDAC Query Speicher freigeben
 
Kannst du das einfach mal ein ein separates Programm packen und nur die Query ausführen? Nur um irgendwelche Seiteneffekte auszuschließen. Probeweise vielleicht auch mal im SQL Management Studio ausführen. Die Query allein ist nicht wirklich aussagekräftig.

haentschman 10. Jul 2018 18:07

AW: FireDAC Query Speicher freigeben
 
:P Heute nicht mehr, ich habe entnervt aufgeben. Morgen wieder... Ich habe noch ein paar Tests im Kopf.

Der schöne Günther 10. Jul 2018 18:45

AW: FireDAC Query Speicher freigeben
 
Das hatte ich auch mal - FireDAC lädt gerne die gesamte Datenbank nur um sie dann auf Client-Seite zu filtern oder zu sortieren. Das treibt er selbst so weit bis ihm als 32-Bit-Prozess der Speicher ausgeht. Da gibt es so unendlich viele Einstellungen in FireDAC, eine davon wird es sein. Ich kann morgen noch einmal nachschauen was ich bei mir ändern musste damit er aufhört.

Uwe Raabe 10. Jul 2018 19:04

AW: FireDAC Query Speicher freigeben
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1406890)
FireDAC lädt gerne die gesamte Datenbank nur um sie dann auf Client-Seite zu filtern oder zu sortieren.

FireDAC kann auch nur maximal soviel Daten laden wie der SQL-Server hergibt. Wenn eine Query nur einen Record liefert, dann müssen das schon ziemlich viele und große Felder sein um 1 GB voll zu bekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.
Seite 1 von 2  1 2      

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