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.361
1.850
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.756
528
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
693
143
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
1.900
548
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.756
528
... 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.031
1.876
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
Neu Ist das ein BUG JTL-Ameise - Fehler und Bugs 1
Neu Ist JTL-POS mit dem SumUp 3G+ kompatibel? JTL-POS - Fragen zu Hardware 0
Neu Bug - Grundpreis bei Preis mit Rabatt ist falsch JTL-Shop - Fehler und Bugs 0
Neu Die Zahlungsart SOFORT ist eine Plugin-Zahlungsart für Mollie. Das zugehörige Plugin ist jedoch nicht installiert! Allgemeine Fragen zu JTL-Shop 0
Neu Wie lange ist der JTL Token gültig? Ich bekomme rel. schnell die Meldung "Fehlerhafter Token" User helfen Usern - Fragen zu JTL-Wawi 0
Wie ist euer Fazit zur 1.10? JTL-Wawi 1.10 20
Neu PayPal Plugin 2.0 - Vaulting - Ist IMMER ein neues Onboarding nötig? Wie prüfen, ob OK? Plugins für JTL-Shop 6
Neu Wenn keine Postnummer für Versand per DHL notwendig ist User helfen Usern - Fragen zu JTL-Wawi 0
Das Hinzufügen von Seriennummern zu einem Artikel ist nicht möglich JTL-Wawi 1.10 6
Neu Ab welcher JTL Edition ist der Batch Export in der Free Version nicht mehr möglich? JTL Ameise - Eigene Exporte 11
Erstellung von Kinderartikel ist nicht möglich JTL-Wawi 1.10 8
Neu Zahlungsarten werden wenn Lieferland nicht Deutschland ist nicht angezeigt. Allgemeine Fragen zu JTL-Shop 2
Neu Wie kann ich Zubehör, welches beim DropshippingLieferanten UND im Standardlager verfügbar ist dropshippen, Wenn der Hauptartikel Dropshipping ist? Arbeitsabläufe in JTL-Wawi 5
In Diskussion Wie lässt sich die Ausführung eines Workflows stoppen, sobald ein Produkt in einer gewissen Kategorie ist? JTL-Workflows - Fehler und Bugs 1
Neu Feld ist für Vater in einer Kategorie vorgegeben aber nicht vorhanden Lister 2.0 Amazon-Lister - Ideen, Lob und Kritik 0
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.13.0 Releaseforum 4
Neu Einstellen von Variationen ohne Aufpreis (+) Angabe in der Variationsauswahl Allgemeine Fragen zu JTL-Shop 0
Neu Leider funktioniert der Support im Forum nicht so, wie es eigentlich sein soll. JTL-Wawi - Fehler und Bugs 15
Neu Artikelreservierung auf Druckvorlage der Pickliste (Laufwege) Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Importieren von Artikelmerkmalen mit der Ameise JTL-Ameise - Ideen, Lob und Kritik 1
Neu Worker 2.0 - automatische Picklistenerstellung - bitte nur während der Bürozeiten JTL-Wawi - Ideen, Lob und Kritik 4
Neu Variable für die Anzahl eines Produkts auf der Pickliste JTL-Workflows - Ideen, Lob und Kritik 1
Neu Massive Probleme mit JTL-Connector zu Shopify – lohnt sich der Einsatz überhaupt? Shopify-Connector 6
Neu Artikelsuche in der Auftragsübersicht Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Neu Amazon vergibt Rabatte an Kunde und Kunde fehlt der Beleg bzw. Rechnung zu hoch Amazon-Anbindung - Fehler und Bugs 0
Neu Rundungsfehler in der Rechnung JTL-Wawi - Fehler und Bugs 20
Neu Kündigen der Shop-Anbindung nicht möglich Onlineshop-Anbindung 1
Im Sonderpreise fehlt der Register Kasse JTL-Wawi 1.10 2
Neu Probleme beim Anhängen der .mdf Datei User helfen Usern - Fragen zu JTL-Wawi 3
Bedeutung der Farben (Grün/Orange) in der Auftragsmaske + Frage zum Fehlbestand JTL-Wawi 1.10 4
Schnellbearbeitung der Preise irgendwie möglich? JTL-Wawi 1.8 1
Produkt soll nicht auf der Pickliste erscheinen JTL-Wawi 1.9 1
Neu Shop zeigt nur Bilder der Kategorien an, nicht der eigentlichen Produkte WooCommerce-Connector 3
Neu Fehler beim JTL-Worker – "Der Remoteserver hat einen Fehler zurückgegeben: (502) Ungültiges Gateway" (Shopify) JTL-Wawi - Fehler und Bugs 2
Reiter Lieferanten in der Artikelübersicht wird wegen dem fehlenden Recht nicht angezeigt JTL-Wawi 1.10 14
Neu Sortierung der Länder alphabetisch Allgemeine Fragen zu JTL-Shop 2
Neu Ausschalten des Menü Servicedesk und des Buttons in der WaWi User helfen Usern - Fragen zu JTL-Wawi 1
Neu JTL Shop: Ausblenden von Unterkategorien (In der Mitte) möglich ? Allgemeine Fragen zu JTL-Shop 0
Neu Keine Attribute Zuordnung der Plattform: POS möglich JTL-Ameise - Fehler und Bugs 0
Neu .php-cs-fixer.php - nicht identisch mit den Dateien der aktuellen Version von JTL-Shop JTL-Shop - Fehler und Bugs 3
Neu JTL-Shop: Anzeige der Artikel aus untergeordneten Kategorien Allgemeine Fragen zu JTL-Shop 2
Neu 5.5.2: OPC Akkordeon scrollt bei Wechsel der Gruppe ganz nach oben JTL-Shop - Fehler und Bugs 0
Fehler in der JTL-Wawi-Anzeige, ob ein Artikel bereits einem Onlineshop zugeordnet wurde. JTL-Wawi 1.10 5
Neu Scheinbar willkürlicher Abgleich der Artikel WooCommerce-Connector 3
Neu zum 30. Juni 2025 wird der Amazon Lister 1.0 eingestellt JTL-ShippingLabels - Fehler und Bugs 5
Neu Kartongröße abhängig von der Stückzahl User helfen Usern - Fragen zu JTL-Wawi 1
Neu HILFÄÄÄÄ - Gibt es hier jemand der uns helfen kann Schlussrechnungen mit ausgewiesener MwSt bei den Anzahlungen User helfen Usern - Fragen zu JTL-Wawi 32
Neu Plugin - Kindartikel in der Artikelübersicht anzeigen - SHOP-475 Plugins für JTL-Shop 7

Ähnliche Themen