AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird Import aus Textdatei extrem langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Import aus Textdatei extrem langsam

Ein Thema von globetrotter77 · begonnen am 13. Sep 2009 · letzter Beitrag vom 18. Sep 2009
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
mkinzler
(Moderator)

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

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 07:47
Was soll dann geschehen ( bei doppelten PKs)?
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#42

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 07:58
Hallo,

die doppelten sollen doch ignoriert werden (?).

3 Fragen an den Thread-Ersteller:
- Server und Client auf der gleichen Maschine oder 2 Rechner ?
- Version der fbclient.dll stimmt mit Server über ein ?
Welche Version genau ?
- Welche Datenstruktur hat die Tabelle ?

Sonderpreis-Frage:
Mal den Virenscanner deaktiviert ?


Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 08:05
Überschreiben wäre natürlich einfacher ( update or insert into .... )
Markus Kinzler
  Mit Zitat antworten Zitat
muenster

Registriert seit: 9. Apr 2005
Ort: Hamburg
41 Beiträge
 
Delphi 2007 Professional
 
#44

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 09:01
Die Erfahrung der langsamen Transaktion habe ich auch.

Im Grunde nutze ich einen öhnlichen Code um aus der BDE die Daten in Firebird zu migriren.
Allerdings verwende ich die IBDAC.
Da ich die BDE Tabellen zerlegen muss, sind mehrere Aufrufe über TQuery notwendig um die jeweiligen Firebird Tabellen zu füllen. Am Ende des "Umbaus" steht ein INSERT INTO der mit Parametern gefüllt wird. Und die Performance ist ähnlich schlecht wie beschrieben. Das Ganze läuft bei mit komplett lokal.

Es liegt somit die Vermutung nah, dass das Absetzen einzelner Datensätze die Performance des lokalen Firebirdserver ziemlich ausbremst.

Wenn ich den Thread hier richtig verstehe, kann über die Transaktionskontrolle das Absetzen mehrerer Statements gebündelt werden. Ist es richtig, dass SQL.Text mehr als ein INSERT Statement enthalten darf?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 09:05
Nein, ein normaler Query nimmt immer nur ein Statement auf. Es gibt aber in jeder Komponentensammlung auch eine skript-Komponente. Explizite Transaktionssteuerung bedeutet, dass kein Autocommit, nach jedem Insert ausgeführt wird, sondern dass dieser manuell erfolgt. Bei einzelnen Inserts ( unprepared; ohne Parameter) muss zusätzlich für jeden Insert ein Plan gebildet werden. Die Kombination von parametrisierten Abfragen mit Transaktionssteuerung sollte deshlab einiges bringen. Zudem könnte man überlegen die Dupletten vorher aus zu sortieren.
Markus Kinzler
  Mit Zitat antworten Zitat
muenster

Registriert seit: 9. Apr 2005
Ort: Hamburg
41 Beiträge
 
Delphi 2007 Professional
 
#46

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 09:17
Danke, ist aber genau das was ich befürchtet hatte.
Doppelte Datensätze gibt es nicht, ich muss nur häufiger durch die Tabellen um diese in neue Häppchen zu zerlegen. Wenn man schon migriert, dann kann man ja auch gleich das Design überarbeiten.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 09:19
Ich würde, wie gesagt prepared Queries verwenden. Man könnte sich auch überlegen für diesen Fall ein SP zu nehmen
Zitat:
Wenn man schon migriert, dann kann man ja auch gleich das Design überarbeiten.
Macht auf jeden Fall Sinn
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#48

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 10:17
Hallo,
Zitat von muenster:
Wenn ich den Thread hier richtig verstehe, kann über die Transaktionskontrolle das Absetzen mehrerer Statements gebündelt werden. Ist es richtig, dass SQL.Text mehr als ein INSERT Statement enthalten darf?
Jain, es kommt auf die Datenbank an.

Bei einem ähnlichen Problem mit 'nem SQL-Server bin ich hergegangen und habe 100 Inserts in einer Stringliste gesammelt und dann zusammen einer TAdoQuery zugewiesen und gemeinsam per ExecSQL ausgeführt. Das funktioniert, jedes Statement muss dann aber mit einem Semikolon enden. Es ist zumindest mal einen Versuch wert, ob Firebird damit auch zurecht kommt. So könnte man dann eben 100 (oder so) Statements in eine Transaktion packen. Bei meinem Rechner und der benutzen Datenbank habe ich mit 100er-Schritten das beste Ergebnis erhalten, bei weniger Inserts, wurde es deutlich langsamer, bei mehr musste ich mit Timeouts rechnen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#49

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 12:18
Hallo,

Zitat:
ich muss nur häufiger durch die Tabellen um diese in neue Häppchen zu zerlegen. Wenn man schon migriert, dann kann man ja auch gleich das Design überarbeiten.
Und dafür werden hoffentlich mind. prepared Queries benutzt ?

Ist denn der Häppchen-Code wirklich so kompliziert,
dass er nicht in eine SP passt ?


Heiko
Heiko
  Mit Zitat antworten Zitat
muenster

Registriert seit: 9. Apr 2005
Ort: Hamburg
41 Beiträge
 
Delphi 2007 Professional
 
#50

Re: Firebird Import aus Textdatei extrem langsam

  Alt 16. Sep 2009, 13:15
Zitat von hoika:

Und dafür werden hoffentlich mind. prepared Queries benutzt ?

Ist denn der Häppchen-Code wirklich so kompliziert,
dass er nicht in eine SP passt ?
Keine prepared Queries weil das Ganze nur einmal läuft.

Schön wär's wenn es in eine SP passen würde. Leider sind Ergänzungen und/oder Zerlegungen drin. Für eine Einmalige Umstellung viel zu aufwendig.

Gruß Karsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


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 07:31 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