CSV import ist sehr sehr langsam

Hallo werte Community,

kann man irgendwo an der Performanceschraube für CSV Imports bzw. Updates drehen?

Für eine 379KB Große Datei benötigt der sehr lange, oder er bricht ab, da die max execution time erreicht ist.

Hat jemand vielleicht eine Idee woran das liegen könnte?

Max execution time erhöhen beim Hoster? Welchen Hoster und Tarif?

Wir sind unser eigener Hoster. Durch das erhöhen der max execution time läuft der import nun durch. Er benötigt dennoch ca. 180 Sekunden um ca. 100 Datensätze zu aktualisieren. Gemeßen im DEV modus Ajax request duration.

Der Rest im Shop “rennt” förmlich. Noch eine Idee an was an liegen könnte?

Anbei die Konfig

  • Ubuntu 18.04
  • 16GB RAM
  • 100 GB SSD
  • PHP 7.4
  • NGNINX
  • MySQL 8 (auf einer dedizierten Maschiene)

MariaDB auf derselben Maschine als MySQL auf einer anderen (wie schnell ist die andere Maschine?). CPU? Upgrade auf Ubuntu 20.04.1 LTS?

Die MySQL Maschiene hat 8 GB RAM und 8 CPU und ist sich laut HTOP am langweilen. (Auch beim Import)

Ein Upgrade auf 20.04 kommt ebenfalls in frage

Oder habe ich deine Frage falsch verstanden?

Ich hätte dann keine Ideen mehr aber dein Problem ist ja erstmal behoben. Ich mein: wie oft importierst du via CSV?

Zur Zeit recht häufig (Initialbefüllung) Aber in der Regel sind es nicht so viele Artikel auf einmal :wink:

Hallo,

wir haben derzeit das selbe Problem, allerdings etwas drastischer (6kB große .csv mit 40 Zeilen (Varianten eines Produkts)) dauert 66 Minuten. Die 40 Zeilen sind eigentlich Teil einer großen .csv mit etwa 1000 Zeilen. Die wiederum sind ein Teilbereich eines 4900-variantigen Produkts, von dem wir einige gerne verändern würden.

Im htop kann ich ebenfalls sehen, dass nur 2 Threads von MySQL und einer von Apache/PHP gleichzeitig auf mehr oder weniger Volllast betrieben werden. Ich nehme an das Limit entsteht daraus, dass MySQL einzelne Querys nicht wirklich selbst parallelisieren kann?

Deswegen präzisiere ich die ursprüngliche Frage hiermit:

Wäre es denkbar, mehrere Import-Anfragen gleichzeitig zu starten (z.B. via API die Requests des Backends nachbilden?) um das Problem zu lösen, ohne dass man gleich den ganzen Import-Code angreift damit er weniger Tabellen gleichzeitig erfordert/manipuliert? Oder würde das zu Nebenläufigkeitsproblemen führen?