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.