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.207
1.794
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.680
507
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
589
134
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
9
0
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
725
288
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.680
507
... 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
9
0

moon

Mitglied
17. November 2023
9
0
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.813
1.804
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
Warum kann ich die Wawi 1.9.6.0 nicht downloaden? JTL-Wawi 1.9 11
Neu Warum sehe ich diese Optionen nicht in den Versandarten? User helfen Usern - Fragen zu JTL-Wawi 4
Warum und auf was updaten? Wir sind zufrieden mit der Version 1.6.48.0 JTL-Wawi 1.6 4
Neu Warum werden die Preise und Grundpreise in einer unterschiedlichen Form dargestellt? Gelöste Themen in diesem Bereich 3
Neu Kategoriebezeichnungen in URL-Struktur nicht / nur teilweise enthalten, warum? Allgemeine Fragen zu JTL-Shop 1
Neu Prozessablauf WMS Start - Wo ist der Denkfehler? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
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 2
Neu Software Lizenzen Verkaufen! ist das Möglich? Arbeitsabläufe in JTL-Wawi 3
Neu WMS keine Verbindung zur Datenbank wenn Firewall an ist Installation von JTL-WMS / JTL-Packtisch+ 9
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 5
Neu JTL-Wawi 1.9.6.5 - GPSR: Bei Amazon wird der Hersteller falsch gefüllt und die Verantwortliche Person ist LEER - eBay/JTL-Shop sind korrekt Amazon-Anbindung - Fehler und Bugs 23
Neu Zollpapiere nachdrucken - ist das möglich ?! JTL-ShippingLabels - Ideen, Lob und Kritik 1
GPSR - Das Feld [Verantwortliche Person] ist leer hinterlegt! Es findet keine Zuordnung statt. - wie lösche ich den Eintrag JTL-Wawi 1.9 5
Neu KI-Plugin für JTL-Shop - Eure Meinung ist gefragt! 🚀 🤖 Plugins für JTL-Shop 0
Neu JTL berechnet Aufträge obwohl der Shopabgleich gesperrt ist Otto.de - Anbindung (SCX) 0
Neu Wo ist Texte optimieren (KI) hin? JTL reagiert seit 09.24 nicht auf Tickets :( Arbeitsabläufe in JTL-Wawi 1
Neu Kaufland ist aktuell verschwunden - Verkaufskanal deaktiviert! kaufland.de - Anbindung (SCX) 9
Neu Frage an die (Hobby-) Controller: B2C Einzelhandel mit 6% Marketingbudget - das ist normal? Business Jungle 7
Dashboard ist nicht aktiviert JTL-Wawi 1.9 0
Ihre Subscriptionszeit (2024-09-19) ist abgelaufen. Einrichtung JTL-Shop5 2
Neu JTL2Datev ist defekt bei mir seit dem Update von 30.10.2024 User helfen Usern - Fragen zu JTL-Wawi 6
Welche Barcodeschriftart ist zu verwenden, damit der Druck auch von einem iOS-Gerät korrekt ausgeführt wird? JTL-Wawi App 7
Neu Verbindung ist Track&Trace ist gestört JTL-Track&Trace - Fehler und Bugs 10
Neu Artikelnamen auf der Homepage vollständig sehen. Er ist wenn er zu lang ist verkürzt. Allgemeine Fragen zu JTL-Shop 2
Neu Workflow der prüft, ob eine Bestellung komplett aus einem bestimmten Lager lieferbar ist. User helfen Usern - Fragen zu JTL-Wawi 7
Neu Community Free Edition ist nicht mehr kostenlos? Installation / Updates von JTL-Shop 9
Neu WooCommerce JTL Connector nach Back-Up ist deaktiviert WooCommerce-Connector 1
Neu Alles aus dem Composer ist verschwunden Allgemeine Fragen zu JTL-Shop 1
Neu Meldung: "Ihre Auswahl ist leider nicht verfügbar" ist irritierend Betrieb / Pflege von JTL-Shop 10
Neu Kunden in UK - was ist der sinnvollste Weg? Business Jungle 8
Neu Wo ist denn unser Lieblings-Mod "Manuel"? User helfen Usern 5
Neu Beim Retouren anlegen, Retourenposition ist nicht verfügbar Installation / Updates von JTL-Shop 2
Neu Amazon Lister 2.0 - Code 99016 - Ein Maximum von 1 Vorkommen (oder Vorkommnissen) ist für das Attribut color zulässig Amazon-Lister - Fehler und Bugs 1
Neu Amazon Lister 2.0 ...ist erforderlich, wird aber nicht bereitgestellt. Amazon-Lister - Fehler und Bugs 2
Das Remotezertifikat ist laut Validierungsverfahren ungültig JTL-Wawi 1.8 2
Neu Upload Modul - ist nicht rückgängig zu machen Allgemeine Fragen zu JTL-Shop 3
Neu Whatsapp Kontakt auf der Detailseite Allgemeine Fragen zu JTL-Shop 1
Auftragsfenster läst sich nicht in der Höhe Verändern JTL-Wawi 1.9 4
Neu Darstellung der Medeindaten Allgemeine Fragen zu JTL-Shop 0
Neu Artikel Leichen bereinigen in der Datenbank Betrieb / Pflege von JTL-Shop 3
Neu Probleme beim Übertragen der Sendungsnummern an AMAZON Amazon-Anbindung - Fehler und Bugs 3
Neu Änderung der Lieferadresse einer Verkaufsbestellung über die JTL-Wawi API User helfen Usern - Fragen zu JTL-Wawi 0
Neu Newsletter-anmeldung wird nicht auf der Website angezeigt Allgemeine Fragen zu JTL-Shop 0
JTL Wawi Kunden Kommentar hinzufügen, der auch im JTL Pos erscheint. JTL-Wawi 1.9 0
Gültigkeit der Gutscheine zum Jahresende terminieren JTL-Vouchers - Ideen, Lob und Kritik 0
Neu Optimierung der Laufwege Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Seit kurzen vermehrt Spamanfragen in der Shopsuche. Einrichtung JTL-Shop5 1
Neu Problem bei der Anzeige von Hinweistexten für Produkte einer bestimmten Kategorie im NOVA Template Allgemeine Fragen zu JTL-Shop 1

Ähnliche Themen