- Beiträge: 38
Export sehr langsam (Excel&Text)
- Andreas Knobloch
- Autor
- Offline
- Benutzer
bei verschiedenen Definitionen habe ich festgestellt, dass der Export in .xls bzw. .txt ab einem Aufkommen größer 10K Datensätze sehr schleppend vor sich geht.
Beispiel:
Ein Export von ca. 40.000 Datensätzen (kein Einsatz von Heatern) dauert ca. 1,5 Stunden.
Der gleiche Export (Statement) in unserem Datenbanktool dauert keine 5 Minuten (die Abfrage liegt unter 10 Sekunden plus Export in Excel).
Dabei scheint es unerheblich zu sein ob die Definition per Batch oder über den Designer ausgeführt wird.
In einer Definition verwende ich den Verbindungsmodus "Direkt" im anderen "TNS Names", dies hat keinerlei Auswirkungen auf die Dauer.
Die Definitionen werden im Modus "Massdata" ausgeführt.
Von meinem Kollegen habe ich den Tipp bekommen, dass man bei Oracle (bzw. im Treiber) Datensatz für Datensatz schreiben kann oder alle auf einmal.
Diesbezüglich konnte ich leider keine Einstellmöglichkeit finden.
Mit freundlichen Grüßen,
Andreas Knobloch
Mit freundlichen Grüßen
Andreas Knobloch
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
der Excel Export ist generell im FlowHeater langsam. Das liegt daran, dass der FlowHeater das auf dem Rechner Installierte Office verwendet (COM Aufrufe).
Was ich mir aber nicht vorstellen kann ist, dass der Export in eine normale CSV Textdatei ebenfalls so lange dauert? Je nachdem wie lange die ORACLE Datenbank benötigt um den SELECT auszuführen, das können schon mal ein paar Minuten sein, sollte anschließend der Export von 40.000 Datensätzen unter 5 Minuten zu erledigen sein.
Sie meinen schon Daten exportieren? Diese Einstellungen können nur beim Datenimport auf der Oracle Adapter WRITE Seite vorgenommen werden! (Reiter Erweitert -> Datenbank Transaktionen)Von meinem Kollegen habe ich den Tipp bekommen, dass man bei Oracle (bzw. im Treiber) Datensatz für Datensatz schreiben kann oder alle auf einmal.
Diesbezüglich konnte ich leider keine Einstellmöglichkeit finden.
Beim Datenimport kann es bei größeren Datenmengen je nach Datenbank und Einstellungen mit den FlowHeater Standard Datenbank Transaktionseinstellungen zu solchen Verzögerungen kommen. Allerdings kann Oracle mit den Standardeinstellungen normalerweise locker mit Datenmengen > 200.000 Datensätzen umgehen.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Andreas Knobloch
- Autor
- Offline
- Benutzer
- Beiträge: 38
ich habe die Logs der Batchdatei nochmals kontrolliert. Bei der Textdatei handelt es sich um die Importdefinition, welche so lange dauert (ca. 190 K Datensätze , 15 Min). Im Batch wird erst eine Artikelauswahl importiert und anschließend per zweiter Definition exportiert. Der Export geht hier unter einer Minute. Ich werde mit der Importdefinition ein paar Einstellungen testen.
Sie meinen schon Daten exportieren? Diese Einstellungen können nur beim Datenimport auf der Oracle Adapter WRITE Seite vorgenommen werden! (Reiter Erweitert -> Datenbank Transaktionen).Von meinem Kollegen habe ich den Tipp bekommen, dass man bei Oracle (bzw. im Treiber) Datensatz für Datensatz schreiben kann oder alle auf einmal.
Diesbezüglich konnte ich leider keine Einstellmöglichkeit finden.
Hier habe ich mich wohl unglücklich ausgedrückt, ich meinte exportieren. Es ist/soll möglich sein, dass man entweder Zeile für Zeile des Selects in eine Dateie exportiert oder das vollständige Ergebnis auf einmal.
Wenn ich es richtig verstanden habe ist dies eher ein Problem mit der Excel API?
Könnte man hier mit Einstellungen im Excel (2010) etwas bewirken?
Mit freundlichen Grüßen
Andreas Knobloch
Mit freundlichen Grüßen
Andreas Knobloch
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
die Zeit für den Import hängt stark von der Größe der Tabelle, Anzahl Felder und Indexe, Constraints, sind Trigger vorhanden, die Leistungsfähigkeit und Auslastung des Datenbankservers, etc. ab. Aus dem Bauch heraus würde ich mal sagen das ist ein normaler Wert für ca. 200.000 Inserts, der evtl. noch optimiert werden könnte. Weitere Infos finden Sie hier: FlowHeater Leistungsgrenzen
Auf dem Export kann nicht weiter eingegriffen werden. Hier setzen die verwendeten Bibliotheken bereits eigene Caching Mechanismen ein die bisher keinen Grund hergaben zu optimieren. Die von Ihrem Kollegen beschriebene Einstellung bezieht sich m.E. auf den Datenimport, siehe oben.
Bzgl. Excel Export Performance gibt es keine Einstellung die das verbessert. Was Sie evtl. versuchen können ist Anstatt einer .XLS eine .XLSX Excel Arbeitsmappe zu schreiben. Das Problem mit älteren Excel Formaten ist, dass hier max. nur ca. 65.000 Zeilen verwendet werden können. Evtl. hilft das die Performance zu verbessern.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
die 1,5 Stunden für den Excel Export erschienen mir etwas viel, deshalb habe ich mal ein paar Tests durchgeführt.
In der Anlage habe ich Ihnen eine Definition erstellt die 50.000 Testdatensätze nach Excel exportiert . Hier wurde der TestData Adapter verwendet um auszuschließen dass beim Abrufen der Daten vom Oracle Server was nicht stimmt. Dieser Export läuft bei mir mit Excel 2013 in 2 Minuten und 54 Sekunden durch.
Bitte führen Sie diese Definition auf dem betroffenen Rechner aus, sollte eigentlich auch bei Ihnen unter 5 Minuten durchlaufen.
Falls nicht versuchen Sie die Definition noch mal auf einem anderen Rechner auszuführen um einen Referenzwert zu erhalten.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Andreas Knobloch
- Autor
- Offline
- Benutzer
- Beiträge: 38
ich habe ihre Definition in verschiedenen Konstellationen getestet:
- Definition lokal und Ergebnisdatei lokal
- Definition lokal und Ergebnisdatei auf Netzlaufwerk
- Beide auf dem selben Netzlaufwerk
In allen drei Fällen konnte ich ihre Zeit sogar unterbieten (knapp über 2 Minuten).
Daraufhin habe ich die beiden betroffenen Definitionen nochmals getestet.
Die erste Definition läuft mittlerweile schneller (hier scheint der Index, welcher unsere DBA angelegt hat) zu funktionieren.
Bei der zweiten habe ich das Verhalten, dass die Definition startet die Zähler ersteinmmal nicht laufen und dann nach einigen Sekunden auf 250 hoch zählt wieder wartet und so weiter. Später wird die Wartephase länger (ca. 1 Minute) und der Zähler springt um 1000 Schritte.
Die Abfrage der zweiten Definition ist mit einem Subselect in einem Case. Könnte dies dem Flowheater Probleme bereiten?
Da die Abfrage in unserem Datenbanktool in unter 10 Sekunden ein Ergebnis liefert.
Wenn Sie das Statement für Testbenötigen kann ich ihnen dies anonymisiert zur Verfügung stellen.
Mit freundlichen Grüßen
Andreas Knobloch
P.s.: Vielen Dank für ihren Einsatz. Solch einen Einsatz erlebt man nur noch sehr selten seitens Herstellern bzw. IT Dienstleistern.
Mit freundlichen Grüßen
Andreas Knobloch
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
wie lange dauert es wenn Sie die Excel Export Definition im Testmodus ausführen? Hier werden die Daten von der Oracle Datenbank ganz normal gelesen aber der letzte Schritte das Schreiben der Daten in Excel wird nicht mehr ausgeführt.
Wenn das auch in wenigen Minuten geht liegt das Problem an Excel ansonsten müssen wir auf der Oracle Seite weiter suchen.
Ich vermute eher dass es an Excel liegt. Die Performance hängt hier von einigen weiteren Faktoren ab.
- Wie viele Ausgabe Felder pro Datensatz enthält der Export?
- Werden die Daten in eine vorhandene Excel Arbeitsmappe Exportiert und sind hier evtl. Makros oder Berechnungen hinterlegt?
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Andreas Knobloch
- Autor
- Offline
- Benutzer
- Beiträge: 38
bei beiden Definition wird in eine vorhande Exceldatei geschrieben, jede Definition auf ein anderes Tabellenblatt. Pro Datensatz sind es zwei Felder
Die Definition habe ich im Testmodus ausgeführt. Das Ergebnis ist wie folgt:
Verhalten unverändert (Abrbruch nach ca. 5 Minuten und 5000 Datensätzen)
Daraufhin habe ich eine View angelegt und getestet mit folgendem Ergebnis:
Verhalten unverändert
Ein Test mit Export per Textadapter verlief leider auch negativ.
Anbei das Statement:
Erläuterung:
Im ersten Schritt (andere Definition) werden Artikelnummern importiert. (Datei kommt von extern).
Die Artikelnummern sind nicht unsere sondern die der Hersteller.
Im zweiten Schritt wird geprüft ob es zu dieser Nummer einen Bestand gibt (in dieser Tabelle habe ich nur die ID), siehe Statement.
Nicht alle der von extern gelieferten Artikelnummern sind in unserer Datenbank für diese muss dann eine "0" gemeldet werden.
In unserem Datenbanktool kann man ein Statement auf zwei Arten ausführen:
- Data Output
- SQL Output
Im "Data Output" Modus dauert es ca. 5 Sekunden und das Ergebnis ist da.
Im "SQL Output" Modus habe ich Heute das gleiche Verhalten wie im Flowheater festgestellt.
Dies ist wohl das was mein Kollege gemeint hat. Ein Statement lässt sich auf zwei Arten ausführen.
Scheinbar kann man sich ein Dataset auf einmal laden oder in einer Art Stream.
Mit freundlichen Grüßen
Andreas Knobloch
Mit freundlichen Grüßen
Andreas Knobloch
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
dann hat Oracle irgendwie Schwierigkeiten mit „Datenbank Cursor“ umzugehen :unsure: Das hat eigentlich den großen Vorteil, dass nicht die komplette Datenmenge auf einmal an den Client geladen werden muss und durch Cache Mechanismen ist normalerweise sichergestellt, dass das ohne Verzögerungen geht. Fordert natürlich die Oracle Datenbank etwas mehr, ist evtl. Ihr Oracle Datenbankserver am Limit bzw. wie sieht die Auslastung des Server während die Daten abgerufen werden aus?
Ich habe Ihnen in der Anlage mal eine kleine Testanwendung „Oracle-Select“ bereitgestellt. Hier werden keine Datenbank Cursor verwendet. Der angegeben SQL wird ausgeführt und die Daten werden anschließend in einem Grid angezeigt. Bitte führen Sie diese Anwendung mal mit Ihrem SELECT aus, läuft hiermit der SQL SELECTschneller ab?
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.