![]() |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo Andreas,
die alte Datenbank. Bis bald Chemiker |
Re: Firebird wird beim Append von Datensätze immer langsamer
Zitat:
...zum anderen mal mit SQL Insert arbeiten (dürfte dem Append/Post überlegen sein 8) ) :P |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo
ich habe vor einiger Zeit mal ein ähnliches Problem untersucht und habe für 1 MIO Datensätze ca 2h gebraucht. Verwendet habe ich die IBX-Komponenten und die Werte mit einer Query ala Insert into eingetragen. Die Datenbank war dabei jungfräulich Grüsse wo |
Re: Firebird wird beim Append von Datensätze immer langsamer
...ich bin zwar kein FIB Experte :wink: aber deine SQL Anweisung könnte in etwa so aussehen.
Delphi-Quellcode:
Form3.PFIBQuery.SQL.Text:= 'insert into MW_TABELLE (MW_MSID,MW_MW,MW_DATUMUHRZEIT) values (:ID,:MW,:DATUM)';
Form3.PFIBQuery.ParamByName('ID'):= strText; Form3.PFIBQuery.ParamByName('MW'):= dbZahl; Form3.PFIBQuery.ParamByName('DATUM'):= Form3.DTDatumUhrZeit; Form3.PFIBQuery.ExecSQL; |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo,
@ Andreas: Zitat:
Aber mal eine andere Frage, ich lassen noch ein DBGrid mitlaufen, kann das mit zunehmender Anzahl an Datensätze die Datenbank ausbremsen? Ich benutze es eigentlich nur, um zu sehen ob noch Datensätze angefügt werden. Zitat:
Wie kann man die offenen Tranksaktionen schließen? Vielleicht reicht das aus. @WoGe: Zitat:
ich benutze FibPlus die sollten für Firebird eigentlich besser geeignet sein. Bis bald Chemiker |
Re: Firebird wird beim Append von Datensätze immer langsamer
Zudem würde ich überprüfen, ob wirklich jeder Insert in eine eigene Transaktion gekapselt werden muss.
|
Re: Firebird wird beim Append von Datensätze immer langsamer
Zitat:
...zu spät gelesen :roll: Zitat:
Entweder Grid raus oder die Aktualisierung unterbinden. Da gibt es für Deaktivieren und Aktivieren Befehle. ...ohne Gewähr DisableControls und EnableControls des Grid (kann ich mir nie merken :? ) |
Re: Firebird wird beim Append von Datensätze immer langsamer
Hoffe, diese stichwortartigen Bemerkungen helfen Dir weiter |
Re: Firebird wird beim Append von Datensätze immer langsamer
...und wie ist der Stand ? :roll:
|
Re: Firebird wird beim Append von Datensätze immer langsamer
Hallo
@Andreas: Zitat:
Es ist eine Verbesserung eingetreten, aber noch nicht gut genug. Habe jetzt das ganze DBGrid rausgenommen. @Tbx: Zitat:
Zitat:
Mit Stored Procedure weis ich nicht ob das geht. Als Messwerte werten zufällige Zahlen generiert, die sich aber zwischen 2 Grenzen bewegen sollen die usw. Zitat:
Hier mal jetzt der Quellcode nach der Umstellung:
Delphi-Quellcode:
Insgesamt haben die Maßnahmen dafür gesorgt, dass ein Datensatz in ca. 1 sek angelegt wird. Ich werde aber versuchen das noch weiter zu verbessern. Das Testen ist nur sehr langwierig, weil man erst nach ca. 30.000 – 40.000 Datensätze feststellt, ob die Änderung was gebracht hat. 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.
////////////////////////////////////////////////////////////////////////////////
{ ******************************************************************************** Datensätze in die Datenbank einfügen ******************************************************************************** } procedure dbEinfügenSQL(const aMAArr: TArrMSRec; var apFIBTransaction: TpFIBTransaction; var aPFIBDataSet: TpFIBDataSet; const aDatumUhrzeit: TDateTime; const ai: Integer; var abME: Boolean); var strText: String; dbZahl: Double; strSende: String; z: Integer; begin for z := 0 to high(aMAArr) do begin strSende:= ZufallMSmitWert(aMAArr[z].FMAID, aMAArr[z].FMWMinBereich, aMAArr[z].FMWMaxBereich); StrText:= copy (strSende,2,5); // Nur die ersten 5 Zeichen übernehmen.StrSende[1,3]; dbZahl:= strToFloat(copy(strSende,7,Length(strSende)-7)); if pos('M1',StrText)=0 then begin aPFIBDataSet.Insert; aPFIBDataSet['MW_MSID']:= strText; aPFIBDataSet['MW_MW']:= dbZahl; apFIBDataSet['MW_DATUMUHRZEIT']:= aDatumUhrzeit; end else begin if ai = 70 then begin aPFIBDataSet.insert; aPFIBDataSet['MW_MSID']:= strText; aPFIBDataSet['MW_MW']:= dbZahl; apFIBDataSet['MW_DATUMUHRZEIT']:= aDatumUhrzeit; abME:= TRUE; end; end; end; end; //////////////////////////////////////////////////////////////////////////////// Ich wollte noch ein Backup von der Datenbank-Datei machen, aber bisher ohne Erfolg. Habe mir eine bat. – Datei geschrieben um ein Backup (mit gbak.exe) von der Datenbank zu bekommen, leider kommt immer eine Fehler-Meldung. Mit IBExpert ist mir auch noch kein Backup gelungen, weil immer eine DLL-Datei, oder der Server-Name fehlt. Zitat:
Bis bald Chemiker |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 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