![]() |
Re: Firebird Import aus Textdatei extrem langsam
sehr schön, wenn auch unverständlich:
mit StartTransaction(TD) und Commit(TD) geht's plötzlich einigermaßen schnell. Vorher ist allerdings noch TD.TransactionID:=1; erforderlich. Ca. 105000 Datensätze in knapp 4 Minuten Kein Vergleich mit dem Ergebnis von omata, aber immerhin. Allerdings dauert danach ein Open eines ClientDataSets schlappe 15 (fünfzehn!) Minuten!!! Abgesehen davon, dass es für mich nach wie vor unverständlich bleibt, wieso es a) über ein ClientDataSet ewig lange dauert b) mit Hilfe von SQLQuery nicht möglich ist bzw. unverständliche Fehlermeldungen liefert ist es natürlich völlig unzumutbar für den User, nach dem Datenimport so lange zu warten, bis sich wieder was tut. Wo ist denn hier der Fallstrick versteckt? Ich kapiere es nicht mehr! Wie gesagt - mit BDE und Interbase-Komponenten war das alles überhaupt kein Problem. Wo kann ich denn bei den Einstellungen überhaupt so nen Bock schießen? Ich gehe zumindest mal davon aus, dass ich ihn selber geschossen habe ... |
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
benutzt du denn jetzt das hier ?
Delphi-Quellcode:
Du musst das mit den Parametern und der Query hinbekommen.
var
TD:TTransactionDesc; (aus DBXpress) begin TD. // usw. SQLConnection.StartTransaction(TD); try SQLConnection.ExecuteDirect('INSERT INTO ...'); SQLConnection.Commit(TD); except SQLConnection.Rollback(TD); end; end; Eine prepared Query ist etwa doppelt so schnell wie das da oben. Man könnte auch noch folgendes machen: - je nach 500 Datensätzen Commit/StartTransaction - per Alter Index XXX Inactive alle nicht benötigten Indizes deaktivieren Heiko |
Re: Firebird Import aus Textdatei extrem langsam
Oder alles in Kombination.
|
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
Das werde ich noch abändern. Pro Datensatz ist allerdings auch zu langsam. Zitat:
Oder wäre es möglich, innerhalb von SQLConnection.StartTransaction und SQLConnection.Commit wieder auf SQLQuery-Methoden zurückzugreifen? (Mal abgesehen davon, dass die unbekannte Spalte angemeckert wird) Zitat:
Zitat:
Leider hat das alles aber gar nichts damit zu tun, dass sich das System danach (!) völlig unzumutbar verhält. |
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
Zitat:
Was passiert, wenn du den Server-Dienst (FBGuardian) anhälst und neustartest ? Ist es danach wieder "normal" schnell, dann hast du eine offene Transaktion (also eine nicht comittete). Zur Query. Was war noch mal das Problem, nicht die SQLQuery zu benutzen ? Wie weit warst du denn da schon. Hast du noch den Quellcode davon (nicht nur die Splitter hier) ? Heiko |
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
Zitat:
Zitat:
den Quellcode habe ich mittlerweile so sehr gemetzelt, das er kaum noch zu erkennen ist, nur um die verschiedenen Vorschläge auszuprobieren. ich habe den Eindruck, dass ich ein grundsätzliches Einstellungsproblem vorliegen habe, habe aber leider keine Ahnung, wo das liegen könnte. was mir ohnehin nicht gefällt, ist die Verwendung der dbExpress-Komponenten (sind mir schon wegen der Unidirektionalität sehr suspekt), aber ich wüsste nicht, was ich sonst nehmen könnte. wenn ich es richtig in Erinnerung habe, muss ich das ClientDataSet verwenden, um auch rückwärts gehen zu können, nicht wahr? irgendwie zieht hier eine Krücke die nächste nach sich, und diese gleich noch mal eine usw. usw. Was für Connection-Möglichkeiten gibt es denn sonst noch? und ist da auch was Empfehlenswertes dabei? |
Re: Firebird Import aus Textdatei extrem langsam
Hallo,
wie wäre es mit den Zeos-Komponenten? ![]() ![]() ![]() Beim ClientDataSet darfst Du nicht vergessen, dass er die gesamten Daten im Arbeitsspeicher vorhält, Deine 100 und ein paartausend Sätze werden also erstmal in die Arbeitsspeicher geladen, ist das erforderlich, da ja offensichtlich eine ziemlich arge "Spassbremse". |
Re: Firebird Import aus Textdatei extrem langsam
Hierfür sollte auch IBX ausreichen
|
Re: Firebird Import aus Textdatei extrem langsam
|
Re: Firebird Import aus Textdatei extrem langsam
Zitat:
könntest du mir vielleicht mal verraten, welche Komponenten und Methoden du verwendet hast? evtl. den Quelltext und/oder die Einstellungen im Object Inspector? vielleicht komme ich dann dahinter, was ich falsch gemacht habe ... wäre toll! Edit: hast du auch doppelte Primary Keys dabei? die muss ich nämlich berücksichtigen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 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 by Thomas Breitkreuz