AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ExecSQL + Speicherverbauch

ExecSQL + Speicherverbauch

Ein Thema von DelphiAndreas · begonnen am 31. Jan 2006 · letzter Beitrag vom 2. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2   
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#1

ExecSQL + Speicherverbauch

  Alt 31. Jan 2006, 15:17
Datenbank: DBase • Zugriff über: BDE
Da das Thema jetzt geschlossen ist (war wirklich vollkommen falsch da ) noch einmal die Frage:

Wie bekomme ich es hin, dass sich der Speicherverbrauch eines BDE-basierten Programmes nicht bei jedem Aufruf von ExecSQL erhöht?
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: ExecSQL + Speicherverbauch

  Alt 31. Jan 2006, 21:24
Zitat von DelphiAndreas:
Da das Thema jetzt geschlossen ist (war wirklich vollkommen falsch da ) noch einmal die Frage:
Deine ursprüngliche Frage hat wirklich nichts mit dieser zu tun.
Zitat:
Wie bekomme ich es hin, dass sich der Speicherverbrauch eines BDE-basierten Programmes nicht bei jedem Aufruf von ExecSQL erhöht?
Die Frage gebe ich unbenutzt an Dich zurück. Wie kriegst Du es hin den Speicherverbrauch zu erhöhen? Wo schaust Du wie, nach was um es zu belegen? Wie sieht die Syntax aus?
Das Abfragen Speicheplatz(leidlich) benötigen sollte dabei aber unstrittig sein!


PS. Du darfst Dir ruhig ein wenig mehr Zeit bei der formulierung Deiner Frage lassen. Das Ergebnis der Antwort kann nur so gut sein wie die Frage.
  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 07:48
okay, dann fang ich ganz langsam nochmal an:

1. Ich habe eine Datenbank-Anwendung, bei der ganz oft die SQL-Befehle INSERT oder UPDATE verwendet werden. Diese müssen mit ExecSQL ausgeführt werden. Vorher schließe ich natürlich ganz ordnungsgemäß das Query und trage dann den SQL-Befehl ein.

2. Wenn man die Anwendung im Windows-Taskmanager verfolgt, kann man eine stetige erhöhung des Speicherverbrauchs bei jeder ExecSQL-Anweisung beobachten.

3. Das ist das eigentliche Problem: Wenn man das Programm zu lange benutzt ohne es neu zu starten stürzt es mit der Meldung "Zu wenig Arbeitsspeicher für diese Operation" ab. Den Moment des Absturzes konnte ich zwar mithilfe von ein paar Einstellungen in der BDE nach hinten verschieben, aber eigentlich möchte ich, dass das so gut wie nie passiert.

Deshalb die Frage: Wie verhindere ich die Erhöhung des Speicherverbrauchs beim Ausführen von ExecSQL?
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 07:55
Versuch mal ein FlushBuffers abzusetzen, damit deine Änderungen auch direkt in die Tabellen geschrieben werden.

Hintergrund: Die BDE versucht immer deine Anwendung performant zu halten und speichert deshalb Änderungen an deiner Datenbank im Speicher. Sie schreibt sie dann oft erst nach Beendigung des Programms tatsächlich in die Datenbank!

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#5

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 08:15
wenn ich das direkt hinter das ExecSQL setze sagt er mir immer: Operation bei geschlossener Datenmenge nicht ausführbar.

Jetzt ist natülich die Frage: Warum ist die Datenmenge geschlossen?

Außerdem habe ich beobachtet, wenn das Programm dann angibt zu wenig Arbeitsspeicher zu haben gehen außer der letzten SQL-Operation keine Daten verloren, d.h. die sind alle ordnungsgemäß in die Tabelle geschrieben.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 08:58
Gibts keinen Code? Die Frage, wieso ein Fehler bezüglich einer geschlossenen Datenmenge beim Ausführen von 'ExecSQL' kommt, hegt den Verdacht, das an deinem Code vielleicht etwas faul ist.

ExecSQL öffnet die Datenmenge nicht, sonder führt nur den Befehl aus, weswegen hinterher auch keine (offene) Datenmenge in der Query stehen kann.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#7

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 09:07
Zitat von alzaimar:
Gibts keinen Code? Die Frage, wieso ein Fehler bezüglich einer geschlossenen Datenmenge beim Ausführen von 'ExecSQL' kommt, hegt den Verdacht, das an deinem Code vielleicht etwas faul ist.
Ich hätte wohl noch meinen Vorposter zitieren müssen, allerdings ist mir jetzt klar, weshalb beim ausführen von "FlushBuffers" der oben genannte Fehler kommt. Die Datenmenge ist einfach nicht geöffnet, aber wegen mir braucht sie das auch nicht zu sein

der code ist ganz normal:

Delphi-Quellcode:
sqlQuery.SQL.text := 'INSERT INTO tabelle' usw.
sqlQuery.ExecSQL;
aber wie gesagt, das funktioniert ja auch, mein Problem wäre nur der Speicherverbrauch und der Absturz der dann irgendwann kommt.

Gruß
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 13:43
Ich schaffe es nicht die Speichergrenzen zu erreichen.
Ob nun mit FlushBuffers oder ohne. Paradox und DBASE.
Du wirst wohl irgendwo an irgendwelchen Einstellungen geschraubt haben oder es ist irgendwas anderes.
Wo fängt man mit rätseln nun an? Ein paar Vorschläge, sonst fällt mir zu dem Thema nichts weiter ein:
- Tabellenlevel (unter den BDE-Einstellungen)
- BDE aktuell(ich habe 5.01installiert)?
- Query-Einstellung im OI verdreht(nur welche?)?
- führst Du Dein Programm aus Delphi heraus aus und würgst es öfters mal ab(Strg+F2)?
  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#9

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 13:50
das problem trat auch immer mit einer frischinstallierten BDE auf, auf jedem Rechner bei dem entsprechend viele Datensätze in die Datenbank eingetragen wurden.

- tabellenlevel ist 7, das einzige was ich da verändert habe ist die Spracheinstellung (FoxPro German 437)
- 5.01 hab ich auch
-
- aus delphi heraus ausführen und abwürgen muss ich zwar auch manchmal, aber wie gesagt es trat auch auf anderen PCs ohne Delphi auf.

Ich kann nicht genau sagen nach wie vielen Ausfü+hrungen von ExecSQl das Probelm auftritt, aber es muss schon so im hunderter-Bereich liegen.

EDIT: Ich seh grad, du benutzt Delphi7 und ich bin noch bei Delphi6, mag es daran leigen? Irgendwann demnächst werd ich nämlich auf Delphi2006 umgestellt, wenns dann weg wär wärs ja okay, ich habe nur das Gefühl es ist ein BDE-Problem
  Mit Zitat antworten Zitat
Benutzerbild von Memo
Memo

Registriert seit: 19. Aug 2003
509 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: ExecSQL + Speicherverbauch

  Alt 1. Feb 2006, 14:00
Zitat von DelphiAndreas:
Ich seh grad, du benutzt Delphi7 und ich bin noch bei Delphi6, mag es daran leigen? Irgendwann demnächst werd ich nämlich auf Delphi2006 umgestellt, wenns dann weg wär wärs ja okay, ich habe nur das Gefühl es ist ein BDE-Problem
Delphi 5 und 2005 hätte ich auch noch im Angebot. Aber wie Du selbst festgestellt hast ist sehr unwahrscheinlich das es an der Delphi-Version liegt.
Hast Du mal ein Stück Programm mit dem man es reproduzieren kann?
Und was steht in der BDE unter System-Init?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:29 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