![]() |
Re: Firebird wird beim Append von Datensätze immer langsamer
Zitat:
Zitat:
Ich würde aber auf jeden Fall ein parametrisiertes Insert-Statement verwenden |
Re: Firebird wird beim Append von Datensätze immer langsamer
Zitat:
Zitat:
:hi: |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo,
ich habe mich wohl etwas verrechnet, bei der Ausgabe von Gettickcount, man sollte msec in sek schon richtig umrechnen. Zurzeit legt das Programm ca. 100 Datensätze in der Sekunde an. Und die CPU-Zeit liegt bei ca. 40-60% nur, sie lag vorher bei 90-100%. Bis bald Chemiker |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo,
der Rechner ist in der Nacht durchgelaufen und es sind ca. 730.000 Datensätze eingefügt worden, zu Anfang sind 180 Datensätze in der Sek. eingefügt worden. Diese Zahl ging aber kontinuierlich runter, um schließlich bei 730.000 Datensätzen im Durchschnitt bei ca. 23 Datensätzen pro sek. zu landen. Bis bald Chemiker |
Re: Firebird wird beim Append von Datensätze immer langsamer
Wie gesagt, verwende explizite Transaktionskontrolle, fasse einige Inserts zusammen und verwende ein parametrisiertes Insert-Statement.
|
Re: Firebird wird beim Append von Datensätze immer langsamer
Der DBGrid ist ein gnadenloser Bremser!
Habe ich selbst schon erlebt. Ist ja auch klar, wenn man sich vorstellt, dass nach jedem neu eingefügten oder angehängten Datensatz die komplette Darstellung neu erfolgen muss. Seitdem stelle ich bei solchen Aktionen immer um auf
Delphi-Quellcode:
und nach Ende der Schleife wieder auf
DBGrid.Visible:=true;
Delphi-Quellcode:
Um beobachten zu können,ob sich noch was tut, kannst Du beispielsweise im StatusBar die aktuelle Anzahl der Datensätze anzeigen.
DBGrid.Visible:=false;
Delphi-Quellcode:
die Anzeige evtl. auch nur alle 100 oder 1000 Datensätze aktualisieren:
StatusBar.Panels[0].Text:=IntToStr(DataSetXY.RecordCount);
Delphi-Quellcode:
Probier's mal aus!
if RecordCount mod 100 = 0 then
... PS: die Sache mit den noch nicht abgeschlossenen Transaktionen stimmt natürlich trotzdem! [edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit] |
Re: Firebird wird beim Append von Datensätze immer langsamer
Zitat:
Im Augenblick enthält StrText die Stellen 2-6 und bei dbZahl fehlt die letzte Stelle von StrSende |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo globetrotter77,
das DBGrid ist raus. Und ob es ausreicht DBGrid.Visible auf FALSE zu stellen bezweifle ich. Dann schon besser wie haentschman geschrieben hat, die Controls mit pFIBDataSet.DisableControls auf FALSE stellen. Um die Datensätze zu Zählen habe ich sowieso einen Zähler der bei jedem Anfügen um 1 erhöht wird. Zitat:
#2 K01T1 Zahl als String #3 , wobei #2 STX ist und #3 ETX ist, diese beiden Zeichen die den Anfang und das Ende des Übertragungsstrings bilden werden für das Speichern in die Datenbank nicht gebraucht. Bis bald Chemiker |
Re: Firebird wird beim Append von Datensätze immer langsamer
Zitat:
Aber ich dachte mir schon, dass es auch was mit Steuerzeichen zu tun haben könnte. Bei mir hat das Umstellen auf Visible=false enorm was gebracht. Bei 100000 Datensätzen kann man noch ganz gut zuschauen. Noch besser ist es natürlich für so ne Sonderaktion das Grid gleich gar nicht erst einzubauen. |
Re: Firebird wird beim Append von Datensätze immer langsamer
habe nochmal nachgeschaut und siehe da, ich habe mich getäuscht:
ich stelle nicht Visible um, sondern DataSource, damit ist es überhaupt nicht mehr betroffen. DBGrid1.DataSource:=NIL; und danach wieder DBGrid1.DataSource:=DataSource1; und zur Kontrolle, was passiert: procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin with Table1 do StatusBar1.Panels[0].Text:= IntToStr(RecNo)+'/'+IntToStr(RecordCount); Application.ProcessMessages; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 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-2025 by Thomas Breitkreuz