Neu Warum ist der Ameisen Export so langsam?

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Ich verstehe nicht warum der Export mit der JTL Ameise egal fuer welche Vorlage unverhaeltnissmaessig langsam ist.
Um 3200 Datensaetze mit 2 Spalten aus derselben Tabelle zu exportieren benoetigt JTL Ameise bei mir 24 Sekunden.
Ich hab mich direkt mit der Datenbank verbunden und die Daten, die die Ameise exportiert direkt mit einer SQL Abfrage abgerufen (15-30 Millisekunden) und anschliessend in eine CSV geschrieben (5-15 Millisekunden).
Wie kann es sein, dass ich die Daten mit ein bisschen Python, was jetzt kein hoch performante Sprache ist, in max. 50 Millisekunden exportieren kann waehrend die Ameise dafuer 24 Sekunden braucht.
Ich hab auch mal die cmd version der ameise mit --nostdout verwendet, wobei die Performance genauso schlecht bleibt.

Hier der Anfang des Berichts der in JTL Ameise angezeigt wird:
Bereite Datei [C:\Users\OEM\Documents\JTL-Export-Lagerplätzsdfsdfe-08102024.csv] zum Speichern vor...
Exportiere Datensätze (insgesamt 3169 Datensätze)...
Lagerplatz [Wareneingangsplatz] wurde 1 Mal exportiert
Lagerplatz [In Bearbeitung] wurde 2 Mal exportiert
Lagerplatz [A4-01] wurde 3 Mal exportiert
Lagerplatz [A4-02] wurde 4 Mal exportiert
Lagerplatz [A4-03] wurde 5 Mal exportiert
Lagerplatz [A4-04] wurde 6 Mal exportiert
Lagerplatz [A4-05] wurde 7 Mal exportiert
Lagerplatz [A4-06] wurde 8 Mal exportiert
Lagerplatz [A4-07] wurde 9 Mal exportiert
Lagerplatz [A4-08] wurde 10 Mal exportiert
Lagerplatz [B4-01] wurde 11 Mal exportiert
Lagerplatz [B4-02] wurde 12 Mal exportiert
Lagerplatz [B4-03] wurde 13 Mal exportiert
Lagerplatz [B4-04] wurde 14 Mal exportiert
Lagerplatz [B4-05] wurde 15 Mal exportiert
Lagerplatz [B4-06] wurde 16 Mal exportiert
Lagerplatz [B4-07] wurde 17 Mal exportiert
Lagerplatz [C4-01] wurde 18 Mal exportiert

Ich frage mich wieso die Male, die ein Lagerplatz exportiert wurde, immer weiter steigt. Das wuerde zumindest die grottige Performance erklaeren : ) JTL WAWI Version 1.8.12.2
 

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Kurz gesagt, kann ich den Exportvorgang um das 500 Fache beschleunigen, indem ich mich direkt mit der Datenbank verbinde und die Daten selber abrufe und in eine CSV schreibe.
 

MichaelH

Sehr aktives Mitglied
17. November 2008
14.279
1.819
Sofern es keine neuere als diese 1.8 Verison gibt, wäre es vermutlich ein Bug für den sich JTL auch interessiert.
Insofern würde ich ein Ticket eröffnen.

Wenn es eine neuere gibt, dann erst mal diese installieren (nicht die 1.9).
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
Kurz gesagt, kann ich den Exportvorgang um das 500 Fache beschleunigen, indem ich mich direkt mit der Datenbank verbinde und die Daten selber abrufe und in eine CSV schreibe.
Was genau bedeutet denn "direkt mit der Datenbank verbinden"? Die Ameise verbindet sich doch auch mit der Datenbank 🤔

und was meinst du mit "Daten selber abrufen"? Meinst du dass du mit deinem Pyython Skript genau dasselbe machst wie die Ameise?
Denn die Ameise macht ja aus Sicht auf Performance bzw. Ressourcenverbrauch noch viel mehr, als nur Daten lesen und das Ergebnis in ein CSV schreiben. Es wird z.b. ein fortlaufender Zähler erhöht und nach jedem Datensatz in dem Fenster der Ameise ausgegeben. Auch wird das Ergebnis nicht einfach am Ende in eine CSV geschrieben, sondern die Datei wird zeilenweise geschrieben.
 

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Aufgrund der Punkte, die du anfuehrst, wuerde ich erwarten, dass die Performance der Ameise ein wenig schlechter ist, als wenn man dieselben Daten direkt mit SQL abruft und in eine CSV schreibt. Der Mehraufwand, den die Ameise hat, wuerde vielleicht Geschwindigkeitseinbussen von bis zu 10x erklaeren, wenn ich mal sehr gnaedig bin. Aber 500x deutet meiner Meinung nach dann nur noch auf ein massives Problem in der Programmierung hin. 3000 Datensaetze (in meinem Beispiel) sind fuer einen Computer ein Witz. Koennte mir vorstellen, dass die Ameise bei jedem exportierten Datensatz eine SQL Abfrage taetigt, warum auch immer, das wuerde das Performance Problem erklaeren.
 

ple

Sehr aktives Mitglied
20. August 2019
671
138
Im Installationsordner von JTL gibt es eine JTL DIAG irgendwas, da kann man einen Mitschnitt machen, was die Wawi so an den SQL schickt, vielleicht mal ansehen beim Export was da alles genau gemacht hin und her dümpelt.
 
  • Gefällt mir
Reaktionen: Jonathan@CD Commerce

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Hab mir mal den Ameisen Export mit JTLDiag angeshen.
Meine Vermutung stimmt, fuer jeden Lagerplatz von den etwa 3000 wird eine eigene SQL Abfrage erstellt.
Verschwenderischer geht es kaum. Das erklaert dann auch die Performance.
Anstatt einmal SELECT * FROM tWarenLagerPlatz macht die JTL Ameise SELECT kWarenLagerPlatz from tWarenLagerPlatz und dann fuer jedes kWarenLagerPlatz von den 3000 Eintraegen SELECT * FROM tWarenLagerPlatz where kWarenLagerPlatz = <entsprechndes kWarenLagerPlatz>
 

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Hab mir auch mal den Export einer anderen, etwas komplexeren Vorlage angesehen. Dort werden dann fuer jeden Datensatz 4 extra SQL Abfragen generiert. Dementsprechend dann auch die Exportzeit von 2min fuer lediglich 2000 Datensaetze, was nicht viele Daten sind.
Die Weise, in der die Ameise programmiert ist, ist meiner Meinung nach ziemlich traurig : )
 

moon

Mitglied
17. November 2023
14
1
Hab mir auch mal den Export einer anderen, etwas komplexeren Vorlage angesehen. Dort werden dann fuer jeden Datensatz 4 extra SQL Abfragen generiert. Dementsprechend dann auch die Exportzeit von 2min fuer lediglich 2000 Datensaetze, was nicht viele Daten sind.
Die Weise, in der die Ameise programmiert ist, ist meiner Meinung nach ziemlich traurig : )
Wenn du Daten Exportieren willst ist eine SQL-Frage natürlich die bessere Wahl. Vorausgesetzt du kannst SQL. Für den Import würde ich jedoch immer die Ameise empfehlen, auch wenn sie langsamer ist. Dafür kennt die Ameise alle Abhängigkeiten von Tabellen und ist sehr robust.
 

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Wenn du Daten Exportieren willst ist eine SQL-Frage natürlich die bessere Wahl. Vorausgesetzt du kannst SQL.
Ich kann SQL. Damit bin ich aber auch der einzige bei mir im Betrieb. Der Sinn und Zweck der Ameise ist es ja, dass auch Normalos die Daten, die sie brauchen exportieren koennen, ohne dass so jemand wie ich jedesmal ein SQL Abfrage dafuer schreiben muss, was dann auch Zeit und Geld kostet.
Ich bin in meiner Firma fuer die Automatisierung von Prozessen zustaendig und bei 50% der Anfragen von Kollegen fuer Automatisierungen, geht es nur darum, dass sie keine Lust haben jeden Tag immer wieder denselben Ameisen Export durchzufuehren und in eine Excel einzufuegen, was immer wieder unnoetig Zeit frisst. Also wollte ich eine Erweiterung schreiben, die eine neue Excel Formel bereitstellt, sodass die Mitarbeiter dann nur noch zum Beispiel in eine Zelle =JTLEXP(template_id) eingeben muessen, und die Daten automatisch gezogen werden mit Hilfe der Ameise, und die Formel gibt die Daten dann zurueck. Da man die Ameise auch ueber die command line steuern kann waere das technisch kein Problem, allerdings haben Excel Formeln bei (Google Sheets was wir verwenden) eine Grenze von 30 Sekunden was die Aufloesung angeht. Wenn in 30 Sekunden kein Ergebnis generiert wurde, schlaegt die Formel fehl. Wenn die Ameise nicht so grottig waere, wuerden 30 Sekunden auch vollkommen ausreichen
 

frankell

Sehr aktives Mitglied
9. September 2019
1.421
436
Flensburg
Ich kann SQL. Damit bin ich aber auch der einzige bei mir im Betrieb. Der Sinn und Zweck der Ameise ist es ja, dass auch Normalos die Daten, die sie brauchen exportieren koennen, ohne dass so jemand wie ich jedesmal ein SQL Abfrage dafuer schreiben muss, was dann auch Zeit und Geld kostet.
Ich bin in meiner Firma fuer die Automatisierung von Prozessen zustaendig und bei 50% der Anfragen von Kollegen fuer Automatisierungen, geht es nur darum, dass sie keine Lust haben jeden Tag immer wieder denselben Ameisen Export durchzufuehren und in eine Excel einzufuegen, was immer wieder unnoetig Zeit frisst. Also wollte ich eine Erweiterung schreiben, die eine neue Excel Formel bereitstellt, sodass die Mitarbeiter dann nur noch zum Beispiel in eine Zelle =JTLEXP(template_id) eingeben muessen, und die Daten automatisch gezogen werden mit Hilfe der Ameise, und die Formel gibt die Daten dann zurueck. Da man die Ameise auch ueber die command line steuern kann waere das technisch kein Problem, allerdings haben Excel Formeln bei (Google Sheets was wir verwenden) eine Grenze von 30 Sekunden was die Aufloesung angeht. Wenn in 30 Sekunden kein Ergebnis generiert wurde, schlaegt die Formel fehl. Wenn die Ameise nicht so grottig waere, wuerden 30 Sekunden auch vollkommen ausreichen
Wenn Du über Google Sheets automatisch die Ameise starten kannst: Warum dann nicht ein bspw. ein PowerShell-Skript, das den CSV-Export erledigt? In Excel ginge das direkt, bspw. in einem weiteren Sheet mit Bezügen dorthin, aber das wird wahrscheinlich nicht so einfach in Google Sheets gehen.
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.733
523
... jeden Tag immer wieder denselben Ameisen Export durchzufuehren und in eine Excel einzufuegen...
Nur als Gedanke dazu (ich kenne ja die genauen Anforderungen nicht):

Lass doch den ganzen Export (und anschließenden Import) mit Ameise oder was anderem einfach aus und lass
* Excel die Daten direct aus der Datenbank holen (Data -> Get Data -> From Database), oder
* konfiguriere die Excel als "Linked Server" direkt im SQL-Server und lass dein Query direkt von der eazybusines in diesen Linked Server rein schreiben
 

moon

Mitglied
17. November 2023
14
1

moon

Mitglied
17. November 2023
14
1
Nur als Gedanke dazu (ich kenne ja die genauen Anforderungen nicht):

Lass doch den ganzen Export (und anschließenden Import) mit Ameise oder was anderem einfach aus und lass
* Excel die Daten direct aus der Datenbank holen (Data -> Get Data -> From Database), oder
* konfiguriere die Excel als "Linked Server" direkt im SQL-Server und lass dein Query direkt von der eazybusines in diesen Linked Server rein schreiben
Und die Zugangsdaten der Datenbank in der Excel speichern?
 

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Nur als Gedanke dazu (ich kenne ja die genauen Anforderungen nicht):

Lass doch den ganzen Export (und anschließenden Import) mit Ameise oder was anderem einfach aus und lass
* Excel die Daten direct aus der Datenbank holen (Data -> Get Data -> From Database), oder
* konfiguriere die Excel als "Linked Server" direkt im SQL-Server und lass dein Query direkt von der eazybusines in diesen Linked Server rein schreiben
Ich wuerde natuerlich am liebsten direkt auf die Datenbank gehen ohne Ameise, aber dann bin ich der Single Point of Failure. Der Normalo kann kein SQL und dann muesste ich fuer jeden die SQL Abfragen schreiben. Mit der Ameise kriegt das auch jeder selbst hin. Und ich hab mal geguckt, in der Ameise gibt es aktuell 40 Exportvorlagen, die vermutlich auch genutzt werden, fuer die alle die entsprechenden SQL Abfragen zu schreiben waere ein heiden aufwand und fuer manche vorlagen auch ziemlich komplex.
 

Enrico W.

Administrator
Mitarbeiter
27. November 2014
8.970
1.853
Die Abfragen der Ameise sind schon deshalb komplexer, weil sie nicht nur ein Szenario abbilden soll sondern viele verschiedene Szenarien bedienen muss.
Dem einen reicht eine einfache Tabelle mit Artikelnummer und VK-Netto, der nächste benötigt eine komplette Auflistung aller Bestände in den jeweiligen Lagerplätzen.
Da ein Artikel nun auf x Lagerplätzen liegen kann wird das entsprechend komplexer.

Bei 1:N-Beziehungen bleibt es nicht aus, dass Abfragen mehrfach durchgeführt werden müssen um alle Ergebnisse zusammenzusammeln.

Wie die oben dargestellten Ergebnisse zustande kommen sollen, kann ich nicht sagen. Dazu müsste man genau wissen, was exportiert wurde.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Mike.K

Jonathan@CD Commerce

Neues Mitglied
8. Oktober 2024
12
1
Die Abfragen der Ameise sind schon deshalb komplexer, weil sie nicht nur ein Szenario abbilden soll sondern viele verschiedene Szenarien bedienen muss.
Dem einen reicht eine einfache Tabelle mit Artikelnummer und VK-Netto, der nächste benötigt eine komplette Auflistung aller Bestände in den jeweiligen Lagerplätzen.
Da ein Artikel nun auf x Lagerplätzen liegen kann wird das entsprechend komplexer.

Bei 1:N-Beziehungen bleibt es nicht aus, dass Abfragen mehrfach durchgeführt werden müssen um alle Ergebnisse zusammenzusammeln.

Wie die oben dargestellten Ergebnisse zustande kommen sollen, kann ich nicht sagen. Dazu müsste man genau wissen, was exportiert wurde.
Das ist das Ding, weil die Ameise so viele Exporte abdecken muss, und man ja nicht fuer jeden moeglichen Export eine passende, optimierte SQL schreiben kann, ist das absolut erwartbar.
Denke troztdem, dass da noch viel Optimierungspotential ist, und es sich lohnen wuerde nachzubessern, auch wenn es sehr komplex ist.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Amazon SCX - warum doppelte Einträge in SCX.tCategoryAttribute mit unterschiedlicher nSectionPosition? Schnittstellen Import / Export 0
JTL 1.9.7.0 | Warum ändert sich der Nummernkreis für Rechnungen bei Bestellungen aus dem OTTO-Market und bei anderen Marktplatzanbindungen nicht? Otto.de - Anbindung (SCX) 3
Neu Warum wird im Shop 5 der Lieferanten-Artikelname anstatt WAWI-Artikelname angezeigt? Wie kann ich das ändern? Betrieb / Pflege von JTL-Shop 1
Neu Warenpost Internaional USA geht nicht, Neuseeland geht - warum? JTL-ShippingLabels - Fehler und Bugs 1
Neu Shop 5.4.0, Seiten werden nicht indexiert von Google, keine Ahnung warum :-( Betrieb / Pflege von JTL-Shop 24
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Neu Ist es möglich auf dem Bon Positionszeilen mit Betrag "0,00" nicht zu drucken? Allgemeine Fragen zu JTL-POS 2
Neu Bilderanzeige teilweise nur wenn der Nutzer angemeldet ist. Allgemeine Fragen zu JTL-Shop 1
Neu Das Stable Release von JTL-Wawi 1.10 ist da! Aktuell - 1.10.10.4 Releaseforum 1
Inkompatible Version JTL WAWI - Die verwendete Version ist zu alt JTL-Wawi 1.9 3
Artikel wird nach Erstellung nicht in der Wawi angezeigt, ist aber in der Datenbank vorhanden. JTL-Wawi 1.9 4
Multishop - was ist das? JTL-Wawi 1.9 6
Neu Versandkostenanzeige Warenkorb ist falsch JTL-Shop - Fehler und Bugs 2
Neu Export von Artikelnummern, in denen ein Artikel als Komponente enthalten ist mittels JTL-Ameise Arbeitsabläufe in JTL-Wawi 2
Neu Welche Bank ist 100 % kompatibel mit JTL Zahlungsmodul? Schnittstellen Import / Export 0
Ist die JTL Vouchers Rest-API frei verfügbar oder muss man die JTL API buchen? Allgemeine Fragen zu JTL-Vouchers 0
Neu Fehlermeldung: Dein Gerät ist nicht mit dieser Version kompatibel Einrichtung / Updates von JTL-POS 0
Neu Ist das möglich? Verwiegepflicht nur bei bestimmtem Aufträgen? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Endpreis* zzgl. Versand , Hilfe der Link ist weg JTL-Wawi 1.8 1
Neu JTL-Wawi 1.10.8.0 - Aufträge "Zusammenfassen [ist] deaktiviert" JTL-Wawi - Fehler und Bugs 23
Neu Shopify Connector: Wo ist die benutzerdefinierte App? Shopify-Connector 1
Darstellung von Stücklistenartikeln in der Rechnung JTL-Wawi 1.9 1
Neu Der Wert darf nicht NULL sein. Amazon-Lister - Fehler und Bugs 1
Neu Bin ich der einzige, der Amazons VCS benutzt (nicht Lite) und mit der neuen JTL-Version 1.10.10.3 akute Probleme hat? Amazon-Anbindung - Fehler und Bugs 0
Neu Übermittlung der "Tracking ID" bei DHL Warenpost International unterbinden User helfen Usern - Fragen zu JTL-Wawi 0
nachträgliche Änderung der URL Einrichtung JTL-Shop5 0
Neu Workflow der die Versandart für den Export zu Amazon nach dem ausliefern über WMS ändert User helfen Usern - Fragen zu JTL-Wawi 3
Keine PDF-Rechnungserzeugung beim VCS-Verfahren der Amazon Buchunsdaten seit Download 1.10.10.3 JTL-Wawi 1.10 4
Neu Lagerbestand nach Alter der Artikel filtern User helfen Usern - Fragen zu JTL-Wawi 1
Neu Artikel aus der Kategorieübersicht zum Warenkorb hinzufügen? Allgemeine Fragen zu JTL-Shop 0
Seit Version 1.10.10.3 folgenden Fehler: Verschieben der Positionen in Angeboten und Aufträgen nicht mehr möglich JTL-Wawi 1.10 11
Neu DPD "Die Abholadresse entspricht keiner der hinterlegten Abholadressen" JTL-ShippingLabels - Fehler und Bugs 0
Gelöst SumUp am POS lässt nur Einstecken der Karte zu Allgemeine Fragen zu JTL-POS 1
Neu Keine Rechnungen für FBA -> Der Auftrag wird extern abgerechnet Amazon-Anbindung - Fehler und Bugs 3
Merkmale mit der Ameise importieren mehr als 10 JTL-Wawi 1.9 1
Neu Bilder fehlen (teilweise) in der Kasse Einrichtung / Updates von JTL-POS 3
Neu WMS Mobile - Meldet sich ständig ab während der Benutzung JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 4
FFN Der Status des Auftrags konnte nicht abgeändert werden JTL-Wawi 1.9 1
Neu Anzahl Artikel in der Artikelübersicht Allgemeine Fragen zu JTL-Shop 3
Neu JTL Wawi / Shop / POS in der Schweiz Starten mit JTL: Projektabwicklung & Migration 0
Problem bei der Produkt-Upload - Marketplace-Abgleich JTL-Wawi 1.9 0
Nach Shopabgleich wird der Auftrag in Wawi immer mit Versandart "Abholung" gesetzt JTL-Wawi 1.9 0
Neu Absender in der E-Mail Vorlage fest hinterlegen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu Staffelpreise in der Angebotsvorlage Arbeitsabläufe in JTL-Wawi 1
Neu Funktionen der Klassen Templates für JTL-Shop 2
Amazon Bestellungen mit Versandentgelt kaufen im Seller Central automatisch in der Wawi abschließen JTL-Wawi 1.9 0
Neu Wie kann ich es so einstellen, dass die Verfügbarkeit schon in der Suche und der Kategorieübersicht angezeigt wird, anstatt nur auf der Artikelseite? Allgemeine Fragen zu JTL-Shop 0
Neu Template Datei Cross Selling / Sortierung nach Name der Cross Selling Gruppe Templates für JTL-Shop 3
Problem bei der Anzeige von Kindartikel-Titeln bei Vaterartikeln (JTL-Shop & eBay) JTL-Wawi 1.9 0
Email aus der WAWI 1.9.7.0 werden nicht an Kunden gesendet JTL-Wawi 1.9 3

Ähnliche Themen