schnellster Weg Bestand und Preis zu importieren

Hallo,

wie im Titel schon steht suche ich den schnellsten Weg um Bestände und Preise zu aktualisieren.

Ich habe ca. 15000 Artikel.

API dauert ca. eine Stunde
CSV Import über Cron dauert auch in etwa so lang

Wenn ich die Felder direkt in der entsprechenden Tabelle ändern würde müßte es ja eigentlich schneller gehen. Entweder durch eine Update Query oder Load Data In File. 

Spricht da irgendwas dagegen es so zu machen? Vermutlich muß ich auch die Artikel auf aktiv/inaktiv setzen…

Danke für ein paar Tips.

 

 

Hi,

die Werte sind natürlich immer recht systemabhängig. Bei meinen letzten Tests habe ich folgende Werte hinbekommen:

API (mit Batch-Modus!!):

  • 10.000 Artikel erstellen: 15 Minuten
  • 10.000 Artikel komplett aktualisieren: 16 Minuten
  • 10.000 Artikel Teil-aktualisieren (active-flag): 6 Minuten

Import/Export Advanced:

  • 50.000 Artikel in etwa 15 Minuten angelegt

Wie gesagt, kann man alles schwer vergleichen. Wichtig ist es, bei derartigen Aktualisierungen wirklich nur die Felder mitzusenden, die a) zwingend erforderlich sind und b) aktualisiert werden sollen. Wenn man einfach immer den ganzen Datensatz schickt, “weiß” Shopware ja vorher nicht, was sich verändert hat und muss das erst umständlich vergleichen oder macht einfach für alle übermittelten Felder ein Update. Wenn die API genutzt wird, sollte unbedingt der sog. Batch-Modus verwendet werden.

Besten Gruß,

Daniel

1 „Gefällt mir“

Danke für deine Antwort.

Mit dem Wert bei Import/Export Advanced wäre ich vollkommen zufrieden. Den dann über die Cron Url aufrufen und fertig.

Meine Preis CSV sieht folgendermaßen aus:

 ordernumber;price;pricegroup;from xxArtkelnummer1;330,22;EK;1; xxArtikelnummer2;433,16;EK;1;

Server is (es läuft auch nur dieser eine Shop drauf)t:

4 Cores x 3,1 GHz
12 GB RAM
SSD

Das  müßte doch eigentlich schneller gehen?

Auch wenn ich den abgebrochenen Import über das Backend wiederhole, kämpft sich der Import 50er Weise ab und benötigt je 50 STk. ca. 5 Minuten.

Wäre es eventuell besser mit Articel Id´s zu arbeiten anstatt mit OrderNumber?

Hm, schwer einzuschätzen. Ggf. was mit der MySQL Konfiguration? Wie groß ist denn deine innodb_buffer_pool_size?

 

innodb_buffer_pool_size = 16M… wird wohl bißchen wenig sein?

Ja, auf jeden Fall. Der Wert sollte etwa so groß sein, wie deine SW-Datenbank selbst, d.h. vermutlich so im Bereich von 1, 2 Gigabyte. Gleichzeitig darf der Wert aber nicht mehr als 80% des RAMs deiner SQL-Maschine betragen => Shopware 5 performance guide for system administrators

 

 

 

1 „Gefällt mir“

ah, das hilft. Danke für den Link hab innodb_buffer_pool_size schon ein wenig erhöht und läuft bißchen besser. Ich les mich mal durch :slight_smile:

für die Nachwelt… wer Probleme mit der Geschwindkeit beim import hat sollte dringend die Parameter in seiner my.cnf anpassen, vor allem bei innodb_buffer… usw.

Vorher für 15000 Artikel knapp über eine halbe Stunde gebraucht

jetzt ca. 6 Minuten.

… aber ist ja auch klar wenn die DB im RAM liegt…