Neu Warum ist der Ameisen Export so langsam?

8. Oktober 2024
13
3
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
 
8. Oktober 2024
13
3
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.583
1.936
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.851
556
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.
 
8. Oktober 2024
13
3
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
820
163
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
8. Oktober 2024
13
3
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>
 
8. Oktober 2024
13
3
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.
 
8. Oktober 2024
13
3
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
2.557
777
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.851
556
... 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?
 
8. Oktober 2024
13
3
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
9.159
1.923
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
8. Oktober 2024
13
3
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.
 
  • Gefällt mir
Reaktionen: ergowebshop
Ähnliche Themen
Titel Forum Antworten Datum
Ein Schritt vor, drei zurück – warum gehen nach Updates immer wieder Grundfunktionen kaputt? JTL-Wawi 1.11 2
Dropshipping setzt kein Lieferdatum in Beschaffung - warum?! JTL-Wawi 1.11 0
Neu Artikelbild verknüpfen verknüpft nur alle Bilder, wenn kein Bild 1 da ist JTL-Ameise - Fehler und Bugs 0
Neu Wo verändere ich die Variable #firma.name# die in Mail-Vorlagen zu finden ist? Allgemeine Fragen zu JTL-Shop 2
Neu von JTL-Wawi-Version 1.10.16.0 ist kein Update...möglich Installation von JTL-Wawi 2
Automatische Berechnung der Artikelmenge wenn Verkaufseinheit qm ist JTL-Wawi 1.10 4
Neu JTL WAWI V1.11.6.0 Stornorechnung, Stornotext wird nicht gespeichert und ist nicht abrufbar JTL-Wawi - Fehler und Bugs 0
Neu Paypal Checkout Plugin - Ist vorhanden aber nichts funktioniert Plugins für JTL-Shop 9
Webinar am 04.02.26: Es geht um euer Backup: Vertrauen ist gut. Restore ist besser! Messen, Stammtische und interessante Events 1
Neu Connector zu WooCommerce ist im Worker gesperrt trotz Lizenz Technische Fragen zu den JTL-Connectoren 5
Neu Falsches Vorschaubild wird angezeigt, obwohl das richtige Bild in JTL hinterlegt ist User helfen Usern - Fragen zu JTL-Wawi 0
Neu eBay Webinar: Dein Business ist bereit für die Weltbühne? News, Events und Umfragen 0
Neu Ist es möglich in WMS Picklistenvorlagen auszublenden, die gerade keinen gültigen Auftrag haben? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Lieferzeiten Angabe bei "wenn ausverkauft" und schon in Beschaffung ist Allgemeine Fragen zu JTL-Shop 0
Neu Wo ist der Worker Status hin? Bei mir ist in Version 1.11.4 nicht mehr zu finden? User helfen Usern - Fragen zu JTL-Wawi 7
Webinar: Verkaufe über die Landesgrenzen hinaus – ist dein Business bereit für die Weltbühne? Messen, Stammtische und interessante Events 0
JTL WAWI 1.11.4 Neues Passwort generieren ist ausgegraut JTL-Wawi 1.11 0
Neu JTL-Packtisch Sortieren ist Grau Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Wo kann ich mich über JTL Kundencenter beschweren? 20 Minuten Lang einen Bug im Ticket dokumentiert, und am Ende "ein Fehler ist aufgetreten" Smalltalk 3
Neu Ist ein Hin- und Rückversand so machbar? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Exporte: $Artikel->Versandkosten ist nicht der günstigste Tarif? Allgemeine Fragen zu JTL-Shop 3
Lieferadresse entspricht der Rechnungsadresse - vorausgewählt Checkout Einrichtung JTL-Shop5 0
Neu Anzeige Kategorie Pfad in der Übersicht User helfen Usern - Fragen zu JTL-Wawi 1
Neu Reihenfolge der Länder (bei der Versandkostenberechnung) Betrieb / Pflege von JTL-Shop 2
Neu CSS GeoIP MwSt.-Finder 2.7.1 verhindert das Anlegen von Shop-Kundenkonten aus der Wawi Plugins für JTL-Shop 0
Prüfung der UST-ID-Prüfung schlägt fehl. (Innergemeinschaftliche Lieferung) JTL-Wawi 1.8 2
Neu Name der Versandart im Shop anzeigen Allgemeine Fragen zu JTL-Shop 36
Neu Amazon Abgleich - seit heute 12:26Uhr keine Übernahme der Bestellungen über Worker Amazon-Anbindung - Fehler und Bugs 9
Artikelbezeichnung auf der Rechnung anpassen von "Artikelname" in "Kurzbeschreibung" JTL-Wawi 1.10 3
Neu Fehler 35 XLM entspricht nicht der Konvention Plugins für JTL-Shop 4
Neu Schelle Peisänderung in der Tabellenansicht möglich? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Update der Version 1.2.2.2 auf eine aktuelle Installation von JTL-Wawi 9
Neu Abbruch auf der Plattform löscht nicht mehr den Auftrag Arbeitsabläufe in JTL-Wawi 3
Neu Anzeige / Summe der Aufträge zu den Auftragspaketen in der Rechnung ?! User helfen Usern - Fragen zu JTL-Wawi 8
Neu QR Code Ausdruck der TSE Einrichtung / Updates von JTL-POS 0
Neu Der Auftrag wird nicht ausgeliefert. Der Auftrag befindet sich bereits auf einer anderen Pickliste. User helfen Usern - Fragen zu JTL-Wawi 0
Neu Bankverbindung in der Wawi ändern - Bankwechsel Installation von JTL-Wawi 2
Neu Fehler mit der Kartenzahlung Einrichtung / Updates von JTL-POS 9
Neu Artikel aus Shopware in der Wawi importieren und WMS redy machen Shopware-Connector 0
"Fehler beim Laden der Daten" in Liste Aufträge und Rechnungen JTL-Wawi 1.11 4
Neu Export der Umsätze kummuliert Allgemeine Fragen zu JTL-POS 0
Neu Der-Kurier anbindung an JTL JTL-ShippingLabels - Ideen, Lob und Kritik 3
Neu Fehler bei Artikel Filter in der Wawi JTL-Wawi - Fehler und Bugs 2
Neu Auffüllen der Tabelle Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Google Merchantcenter - Download der Shoppingfeeds nicht mehr möglich Allgemeine Fragen zu JTL-Shop 6
Neu Übertragung an DATEV mit Besonderheit der Kasse (LS-POS) User helfen Usern - Fragen zu JTL-Wawi 0
Neu Einen Artikel in der POS in zwei MwSt. Varianten abbilden Allgemeine Fragen zu JTL-POS 3
Nach Update auf 1.11.6 werden die Preisänderung nicht mehr von der Wawi an Amazon übertragen JTL-Wawi 1.11 0
Wareneingänge werde nicht mehr in der Liste der Korrekturbuchungen angezeigt? JTL-Wawi 1.11 1
Bankverbindung in der xml ZugFerd ändern je nach Zahlungsart JTL-Wawi 1.11 5

Ähnliche Themen