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.242
1.810
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.717
516
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
660
137
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.161
373
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.717
516
... 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.926
1.835
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 Shop 5.4.0, Seiten werden nicht indexiert von Google, keine Ahnung warum :-( Betrieb / Pflege von JTL-Shop 19
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Neu GPSR Adressdaten: Warum wie löscht man das Bundesland? JTL-Wawi - Fehler und Bugs 1
Neu XML Rechnung - Artikel werden für 0€ verkauft, warum? JTL-Wawi - Fehler und Bugs 6
Neu Warum kann ich keine Standard Cpupons in 5.4.0 mehr an Kunden mailen? Allgemeine Fragen zu JTL-Shop 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 18
Neu Shopify Connector: Wo ist die benutzerdefinierte App? Shopify-Connector 0
Variationen anlegen ist quälend langsam JTL-Wawi 1.8 5
Workaround - wenn keine Verwiegung oder Berechnung möglich ist. JTL-Wawi 1.9 4
Neu XRechnung ist als Anhang CSV Smalltalk 9
Beantwortet Prozessablauf WMS Start - Wo ist der Denkfehler? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu WARNUNG - Ameise 1.9 übergeht komplette Zeilen, wenn Erscheint am Datum leer ist z.B. weil entfernt/aktualisiert werden soll - HT-Zugriff verweigert JTL-Ameise - Fehler und Bugs 4
Neu Software Lizenzen Verkaufen! ist das Möglich? Arbeitsabläufe in JTL-Wawi 13
Neu WMS keine Verbindung zur Datenbank wenn Firewall an ist Installation von JTL-WMS / JTL-Packtisch+ 10
Multishop? Subscription in Abo umwandeln. Welche Lizenz??? Was ist zu tun? JTL-Wawi 1.9 6
Lagerbestand im Vaterartikel je Lager stimmt nicht / ist immer 0 JTL-Wawi 1.8 6
Neu [Error][Code:21920403] Die angegebene E-Mail-Adresse ist falsch formatiert. eBay-Anbindung - Fehler und Bugs 12
Neu WMS - 1 Auftrag -> in 2 Lieferungen / Picklisten aufteilen (auf Basis der Versandklasse) Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Gesamtzahl der Aufträge pro Monat für JTL Rechnung Einrichtung und Installation von JTL-eazyAuction 0
Neu Übertragungsproblem der Kategorien bei der Shopware-Integration Shopware-Connector 0
Telefonisch Beratung, Hilfe bei der Angebotserstellung für otto.de Otto.de - Anbindung (SCX) 0
Neu Grundpreisanzeige in der Variationsauswahl Allgemeine Fragen zu JTL-Shop 0
Neu Benutzer Rechte - Versand Mitarbeiter soll Menge von Freipositionen mit der Lieferscheinerstellung ändern dürfen Arbeitsabläufe in JTL-Wawi 4
Neu Neukundenrabatt wird nicht im Warenkorb abgezogen, erst bei der Bestellungszusammenfassung Allgemeine Fragen zu JTL-Shop 0
Neu Problem mit der Anleitung bei der Vergabe der Rechte. Installation / Updates von JTL-Shop 1
Neu NovaChild Abstand zwischen Zeilen in der Produkt-Detailansicht ändern/reduzieren Templates für JTL-Shop 2
Neu Anzeige von Chargen-Nummern und MHDs der Komponenten von Stücklistenartikeln auf dem Lieferschein User helfen Usern - Fragen zu JTL-Wawi 1
Neu Fehlermeldung bei Synchronisation aus der WaWi: "Artikel "XYZ" kann nicht hochgeladen werden, da der Shop den Steuersatz '19' nicht unterstützt." WooCommerce-Connector 1
Otto Market - Geplante Downtime der Produktschnittstelle am 12. März 2025 Störungsmeldungen 0
Neu Bewertungssterne ausblenden in der Artikelübersicht Allgemeine Fragen zu JTL-Shop 0
Neu Fehler bei der Installation in der defines.php Installation / Updates von JTL-Shop 9
Neu Expressbearbeitung (unter Zusatzverpackung) in der WaWi per Workflow abfangen Allgemeine Fragen zu JTL-Shop 2
Neu Ändern der Header-Einstellungen im NOVA-Template ziehen nicht Templates für JTL-Shop 1
Neu Wie rufe ich Artikelbilder aus der Wawi im PowerBI Report Builder ab? User helfen Usern - Fragen zu JTL-Wawi 2
Dropshipping - Der Auftrag wird nicht ausgeliefert. JTL-Wawi 1.9 0
Neu Der Artikel steht "In Aufträgen" Allgemeine Fragen zu JTL-Shop 0
Neu Anzeige Handy-Nr. in der POS Allgemeine Fragen zu JTL-POS 0
Neu Anzeige Handy-Nr. in der POS Allgemeine Fragen zu JTL-POS 0
Neu Lange Stücklisten mit der Ameise einspielen dauert lange. User helfen Usern - Fragen zu JTL-Wawi 2
Neu Farbe der Schrift im mobilen Menü Templates für JTL-Shop 2
Neu Shoprabatt - kein Rabatt auf der Rechnung vs kein Shoprabatt dafür selber an Rabatt setzen denken User helfen Usern - Fragen zu JTL-Wawi 7
Neu Keine Anzeige von Bildern in der POS 1.0.11.3 Allgemeine Fragen zu JTL-POS 2
Neu Lastschrift an der POS Kasse Allgemeine Fragen zu JTL-POS 1
Wo steht jetzt die Seriennummer in der Rechnungsübersicht? JTL-Wawi 1.9 1
Neu Fehlerhafter Abgleich wegen angeblich mehr als 500 Artikel in der CFE von JTL-Shop 5 Allgemeine Fragen zu JTL-Shop 18
Aufpreis des Kindartikels wird nicht in der Beschaffung übernommen JTL-Wawi 1.9 1
Neu Leerzeichen vorangestellt im Barcode der Seriennummen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 8

Ähnliche Themen