AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird wird beim Append von Datensätze immer langsamer
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird wird beim Append von Datensätze immer langsamer

Ein Thema von Chemiker · begonnen am 24. Jan 2009 · letzter Beitrag vom 31. Jan 2009
Antwort Antwort
Seite 3 von 3     123   
mkinzler
(Moderator)

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

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 26. Jan 2009, 19:13
Zitat:
Insgesamt haben die Maßnahmen dafür gesorgt, dass ein Datensatz in ca. 1 sek angelegt wird.
Was ja noch nicht berauschend ist.
Zitat:
Was auf jeden Fall stört ist die BDS 2006, weil mit zunehmender Zeit immer mehr virtueller Speicher verbraucht wird, ohne dass man irgendetwas mit ihr macht.
Ist auch nicht normal
Ich würde aber auf jeden Fall ein parametrisiertes Insert-Statement verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#22

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 26. Jan 2009, 20:41
Zitat:
Was ja noch nicht berauschend ist.
...ist eine Katastrophe
Zitat:
Ich würde aber auf jeden Fall ein parametrisiertes Insert-Statement verwenden
...ist zwingend notwendig !

  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#23

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 26. Jan 2009, 21:43
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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 27. Jan 2009, 14:00
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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 27. Jan 2009, 14:05
Wie gesagt, verwende explizite Transaktionskontrolle, fasse einige Inserts zusammen und verwende ein parametrisiertes Insert-Statement.
Markus Kinzler
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#26

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 31. Jan 2009, 07:09
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

DBGrid.Visible:=true; und nach Ende der Schleife wieder auf

DBGrid.Visible:=false; Um beobachten zu können,ob sich noch was tut, kannst Du beispielsweise im StatusBar die aktuelle Anzahl der Datensätze anzeigen.

StatusBar.Panels[0].Text:=IntToStr(DataSetXY.RecordCount); die Anzeige evtl. auch nur alle 100 oder 1000 Datensätze aktualisieren:

Delphi-Quellcode:
if RecordCount mod 100 = 0 then
  ...
Probier's mal aus!

PS: die Sache mit den noch nicht abgeschlossenen Transaktionen stimmt natürlich trotzdem!

[edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#27

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 31. Jan 2009, 07:21
Zitat von Chemiker:
Delphi-Quellcode:
  StrText:= copy (strSende,2,5); // Nur die ersten 5 Zeichen übernehmen.StrSende[1,3];
  dbZahl:= strToFloat(copy(strSende,7,Length(strSende)-7));
Bevor du dir Schrottdaten generierst, solltest du die beiden Zeilen auch noch mal überarbeiten!
Im Augenblick enthält StrText die Stellen 2-6 und bei dbZahl fehlt die letzte Stelle von StrSende
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#28

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 31. Jan 2009, 08:31
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 von globetrotter77:
Bevor du dir Schrottdaten generierst, solltest du die beiden Zeilen auch noch mal überarbeiten!
Im Augenblick enthält StrText die Stellen 2-6 und bei dbZahl fehlt die letzte Stelle von StrSende
Das sind keine Schrottdaten, weil der String von einem SPS geliefert wird und folgende Form hat.

#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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#29

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 31. Jan 2009, 08:49
Zitat:
Das sind keine Schrottdaten
Ich meinte das auch nicht negativ, sondern mir ist aufgefallen, dass du was anderes rausholst als du im Kommentar erwähnst. Und dann werden aus den schönen Daten ganz leicht Schrottdaten.
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.
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#30

Re: Firebird wird beim Append von Datensätze immer langsamer

  Alt 31. Jan 2009, 09:03
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 02:16 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