AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireBird - Too many Savepoints?
Thema durchsuchen
Ansicht
Themen-Optionen

FireBird - Too many Savepoints?

Ein Thema von TUX_der_Pinguin · begonnen am 26. Aug 2008 · letzter Beitrag vom 27. Aug 2008
Antwort Antwort
Seite 1 von 3  1 23      
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 15:33
Datenbank: FireBird • Version: 2.0.4 • Zugriff über: ZEOS 6.6.3 - stable
Ich habe hier eine Anwendung, die sich beim Start mit einer embedded Firebird Datenbank Verbindet.
Beim Start der Anwendung wird ein Thread gestartet, der die Datenbank mit Daten füttert. Solange
der Anwendet nichts macht führt der Thread eine INSERT Anweisung nach der anderen aus.

Startet der Anwender eine Suche wo bei logischerweise eine Select Anweisung durchgeführt wird
so erhalte ich eine Exception: "gds internal Software consistency check... (Too many Savepoints (287))"
was soll das und wie verhindere ich diesen Fehler?

Ich bin ratlos und finde nichts bzw. nicht viel zu dem Thema.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 15:42
Wann erzeugst du Savepoints ( Teiltransaktionen)?
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 15:42
Und die Savepoints werden tatsächlich nicht von dir erstellt ? Ganz sicher nicht ? Zeos düfte die wohl sowieso nicht unterstützen (glaube das kann nicht mal IBX), oder doch ?
Gruß
Hansa
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 15:55
Vor dieser Fehlermeldung habe ich nicht mals was von "Savepoints" gewußt,
ich arbeite nicht mit Transaktionen, das grobe Prinzip einer Transaktion
verstehe ich ja aber ich hatte das nicht für nötig gehalten das zu benutzen.

Also das hinzufügen von Datensätzen erfolgt vom Prinzip her so...
Delphi-Quellcode:
SQLQuery := TZQuery.Create(self);
SQLQuery.SQL.Text := 'INSERT INTO TAB (Kunde, Name) VALUES (:Kunde, :Name)';
SQLQuery.ParamByName('Kunde').asString := sKunde;
SQLQuery.ParamByName('Name').asString := sName;
SQLQuery.ExecSQL;
Das erledigt eine art "Update Thread" für mich im Hintergrund des Programms
im Vordergrund kann der Anwender in den Daten suchen dazu wird eine 'SELECT'
Abfrage erstellt und an die Datenbank geschickt, jedoch kommt dabei dann
die besagte Fehlermeldung.

Meine Vermutung ist das FireBird das nicht haben kann das man Datensätze hinzufügt
und gleichzeitig eine Select-Abfrage startet.

Da beim Programmstart die Datenbank ebenfalls befüllt wird, wenn diese leer ist
lasse ich meine Anwendung zu Testzwecken laufen und bisher ohne Probleme er hat
sicherlich schon so knapp 10.000 Datensätze hinzugefügt. Also an der Menge scheint
es nicht zu liegen, das war meine erste Vermutung das ich nicht ohne ende hinzufügen
kann ohne zwischen durch die DB zu "speichern".
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 16:18
Zitat von TUX_der_Pinguin:
Vor dieser Fehlermeldung habe ich nicht mals was von "Savepoints" gewußt,
ich arbeite nicht mit Transaktionen, das grobe Prinzip einer Transaktion
verstehe ich ja aber ich hatte das nicht für nötig gehalten das zu benutzen...
Ersteres war zu erwarten. Und mit dem Verzicht auf Transaktionen hebelst du die ganze DB aus. FB ohne Transaktionen ? Dass dann irreführende Fehlermeldungen kommen, ist kein Wunder. Ein Select auf die gerade eingefügten Datensätze kann gar nicht gehen, bevor die betreffende Transaktion committed ist. Bzw. wird da nichts zurückkommen, weil das noch "inoffiziell" ist. Dass da jetzt irgendwas mit Savepoints angemahnt wird, das dürfte Zeos Schuld sein.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 16:24
Zeos scheint wohl intern Savepoints zu verwenden. stelle auf explizite Transaktionssteuerung um
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: FireBird - Too many Savepoints?

  Alt 26. Aug 2008, 16:35
Ich hatte mal das selbe Problem.

Laufen deine INSERT-Statements in einem eigenen Thread ab? Also kann die Suchanfrage parallel dazu, natürlich nur über die selbe Connection, weil Embedded-Version, ausgeführt werden?

Dann musst du mit kritischen Abschnitten arbeiten und den Datenbankzugriff auch innerhalb deines Programms schützen.
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 08:26
Zitat von omata:
Ich hatte mal das selbe Problem.

Laufen deine INSERT-Statements in einem eigenen Thread ab? Also kann die Suchanfrage parallel dazu, natürlich nur über die selbe Connection, weil Embedded-Version, ausgeführt werden?

Dann musst du mit kritischen Abschnitten arbeiten und den Datenbankzugriff auch innerhalb deines Programms schützen.
Ja genau das Problem habe ich, was heißt den jetzt "kritische Abschnitte" ? Soll das heißen das ich bevor ich eine Suchanfrage
starte prüfen soll ob der Thread gerade dabei ist INSERT anweisungen auszuführen. Oder ist damit irgendwas spezielles gemeint?


Ansonsten kann ich ja auch wenn eine Suchanfrage gestartet wird das hinzufügen stoppen so das beim nächsten durchlauf
weiter gemacht wird.


Zitat von mkinzler:
Zeos scheint wohl intern Savepoints zu verwenden. stelle auf explizite Transaktionssteuerung um
Was sind den diese Savepoints überhaupt und wozu sind diese gut, ich raff das noch nicht so ganz.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 09:19
Mit Hilfe von SavePoints kannst du Transaktionen in Teiltransaktionen zerlegen, welche du zurücksetzten kannst
Markus Kinzler
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: FireBird - Too many Savepoints?

  Alt 27. Aug 2008, 09:37
Ich habe das ganze jetzt wie "omata" vorgeschlagen gelößt und verhindere programm intern das Datenbank "Update" und Suche
zeitgleich ablaufen können, indem ich das "Update" abbreche wenn ein Suchvorgang gestartet wird, so bekommt der Anwender
nichts davon mit und die Fehlermeldung habe ich seit dem auch nicht wieder gesehen.

Zur Zeit kämpfe ich dafür an Performance problemen, ich beführchte das FireBird nie so flott sein kann/wird wie z.b.
ein Dedizierter MySQL Server aber das ist ein anderes Thema.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13:06 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