Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Server läuft Speicher Voll (https://www.delphipraxis.net/91055-sql-server-laeuft-speicher-voll.html)

renekr 28. Apr 2007 13:16

Datenbank: SQL Server • Version: 2005 • Zugriff über: ADO

SQL Server läuft Speicher Voll
 
Hallo,

Ich hoffe hier kann mir jemand einen Tipp geben.

Ich habe das Problem das wenn ich meine Anwendung öffne und eine Abfrage mache die über ca. 5000 Datensätze geht oder eine andere die über knapp 60000 Datensätze geht mir an meinem Server W3K SQL 2005 der Speicher vom SQLSrv.exe voll läuft.

Wenn ich die Connection,Das Programm zu mache ist der Speicher noch da und nicht freigegeben,obwohl ich in der Anwendung alle Datamodule usw Free mache.

Der Speicher geht bis max. 1 GB voll.

Kann mir da jemand helfen was ich ev. in der Anwendung ändern kann.

Vielen Dank.

mkinzler 28. Apr 2007 13:18

Re: SQL Server läuft Speicher Voll
 
Limitiere die Datenmenge und hole diese dynamisch bei Notwendigkeit

renekr 28. Apr 2007 13:26

Re: SQL Server läuft Speicher Voll
 
Hi,

Das habe ich auch schon in betracht gezogen,aber da läuft der Speicher ja dann nur langsamer voll.

Ich habe so den Verdacht das er nach dem Query aufruf und ausgeben der Datensätze,wenn ich dann die Query schliesse den Speicher im SQL Server nicht Freigibt!

Aber das würde ja dann am SQL selber liegen?


mfg

mkinzler 28. Apr 2007 13:29

Re: SQL Server läuft Speicher Voll
 
Wenn du die Datenmenge limitierst dürfte auch der Datenverbrauch des Servers sinken. Wieviel Speicher gestehst du dem Server zu (auto?).
Das Schließen des Programmes schließt ja nicht den Query am Server

renekr 28. Apr 2007 13:40

Re: SQL Server läuft Speicher Voll
 
Hi,
hab gerade geschaut.

Ich hbae noch die Standard Settings drin:
Automatisch ist nicht drin.
Minimum Server Memeory in MB = 0
Maximum Server Memeory in MB = 2147483647

Das "in MB " steht in Klammern.
Das wären ja dann max. ca.naja mehr wie Terrabytes.

Kann das sein?

MAx Server Memory ist 2048 MB.

Danke

mkinzler 28. Apr 2007 13:52

Re: SQL Server läuft Speicher Voll
 
Zitat:

Das wären ja dann max. ca.naja mehr wie Terrabytes.
Nei 2 GB also den ganzen Speicher.
Warum brauchst du mehr als 60000 Datensätze?

renekr 28. Apr 2007 14:01

Re: SQL Server läuft Speicher Voll
 
Ja stimmt habs getestet.
Mann kan nmehr einstellen aber er nimmt logischer weise nur das Max an Physikalischem Ram.

Die komme in ein Grid rein zum einsehen.
Frag net so wolle ses halt haben.

Mir gefällt es a net so dolle.

I habe schon eine Top 10 abfrage reingemacht das kam net gut an !

Tjs User halt .


Und unser eins darf sich dann mit den Server Folgen rum ärgern.

Hast du ev. eine bessere idee wie ich die 60t DS selecten kann ??
EV.. in ein normales Grid rein und die SQL Verbindung dann aufräumen ?

mfg

mkinzler 28. Apr 2007 14:06

Re: SQL Server läuft Speicher Voll
 
Dann lade immer nur ein bisschen mehr als im Grid angezeigt werden kann und lade beim Scrollen nach.

renekr 28. Apr 2007 15:21

Re: SQL Server läuft Speicher Voll
 
Hi,
das wäre ne Idee,aber merkt das der USer nicht ,also gibt es beim Scrollen verzögerungen?

danke

omata 28. Apr 2007 15:57

Re: SQL Server läuft Speicher Voll
 
Hallo renekr,

begrenze den Speicher im SQL-Server doch auf z.B. 750MB. Darüber hinaus wird der SQL-Server dann nicht mehr gehen. Er wird dann selber dafür sorgen, dass er Speicher anders benutzt, wenn er das braucht. Dein Gesamtsystem bleibt dann stabiel. Ich würde nicht anfangen im Programm große Verränkungen zu machen. Da baust du dir eventuell nur böse Fehler ein.
Müssen den wirklich immer alle Zeilen angezeigt werden?
Bei solchen Problemen begrenze ich standardmäßig die Ausgabe auf z.B. 100 Datensätze. Diese Begrenzung kann der Benutzer aufheben. Wenn es nicht nötig ist wird aber das DBGrid schnell geladen.
Dies geht natürlich nur wenn du eine Sortierung angeben kannst, in der die eventuelle Wichtigkeit der Datensätze steht. Damit eben die Zeilen, die der User vermutlich gerade braucht auch die ersten 100 Zeilen sind. Wie wäre es vielleicht mit einem Zeitstempel?
Wie auch immer, ich würde da auf dem Server Einstellungen verändern. In deiner Software wäre ich da vorsichtig.

Edit: Der SQL-Server gibt seinen Speicher frei, wenn er das für richtig hält. Also erst dann wenn er beendet wird. Du kannst nur entscheiden wo das Maximum liegen soll.

Gruss
Thorsten

renekr 28. Apr 2007 16:18

Re: SQL Server läuft Speicher Voll
 
Hi,
Danke.
Die DS werde schon nach den Letzten Einträgen sortiert, ( ist so ein art Logbuch ),und Lagersystem( da anch Bezeichnung aber nur isngesamt knapp 5000 DS )


Werde den Speicher mal anpassen und schaun was sich ergibt.


Danke.

Bernhard Geyer 28. Apr 2007 17:16

Re: SQL Server läuft Speicher Voll
 
Läuft auf dem Server noch irgendwas anderes relevantes? Falls nein so lass doch den Server seinen Speicher. Dieser wird z.B. verwendet um alle Indizes im RAM zu halten um wirklich schnell zu sein. Was bringt dir es wenn er nur z.B. 1GB verwendet und dafür bei größeren Aktionen langsam wird?

hoika 30. Apr 2007 08:27

Re: SQL Server läuft Speicher Voll
 
Hallo,

ich habe in einem Fall eine Begrenzung z.B. auf "Daten der letzten x Tage",
Der Nutzer kann die natürlich selber festlegen durch

Start
Start/Ende
Ende


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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 by Thomas Breitkreuz