Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

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

Re: [Firebird 2.1] Statement zu einer offenen Transaktion fi

  Alt 25. Feb 2009, 13:41
Hi,

Erfolgsmeldung

Die Tipps aller und speziell die Query von Elvis haben mir geholfen. Ich verwende dbExpress und habe einige TSQLQuerys offen gehalten. Die habe ich durch TSimpleDataset ersetzt, wobei ich noch nach dem Einlesen der Daten die interne Connection wieder geschlossen habe.

Anschließend hatte ich 0-2 aktive Transaktionen, anstatt 6 (und einem Uralt-Übeltäter)

Hintergrund: Zwischengespeicherte Messwerte müssen an einen Client übertragen werden. Manchmal isser da, manchmal eben nicht. Wenn er nicht da ist, werden die Daten in einer FB-DB gepuffert. Nun teste ich den Extremfall, das der Client nach einigen Tagen erst wieder online und die DB in der Zwischen auf 500MB angeschwollen ist.

Ich lese also jeweils 10000 Messwerte aus der DB ein und schicke diese in Häppchen à 70 Stück (Limitierung des Clients) mit XML an den Client. Diese 10000er TSQLQuery war aber die ganze Zeit offen (klar, ich muss ja alle Daten verschicken).

Die Messapplikation hat aber in der Zwischenzeit kräftig neue Messergebnisse fabriziert und diese in die DB geschrieben. Und genau diese Schreiboperation wurde immer langsamer, da obige (TSQLQuery)-Transaktion offen war.

So erkläre ich mir das jedenfalls. Was ich allerdings 'gewöhnungsbedürftig' finde, ist die Tatsache, das eine Query offensichtlich eine Transaktion öffnet. Aber gut, wenn das so ist.

PS: Ein sehr hübsches Monitoring-Tool ist von 'Sinática'. Ich mach da jetzt keine Werbung, weil das Tool nicht sonderlich viele Features hat, aber schön anzusehen ist es allemal. Es lohnt -aus rein ästhetischen Gesichtspunkten- sich das Teil mal anzuschauen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat