Optimalizace insertů – migrace dat
- Rndoom04
- Člen | 75
Dobrý den,
prosím o popostrčení ohledně optimalizace insertů do databáze.
Pracuji na migrování dat z jednoho e-shopu do druhého (k oboum mám zdrojové kódy). Na původním jsem si napsal API, které přečte databázi a vrátí jako JSON (produkty, varianty, objednávky, …). Aktuálně řeším produkty a varianty.
Data přečtu a přes foreach zpracuji:
- Založím produkt | 1 insert
- Přiřadím ho do kategorie (pokud neexistuje, založím) | 1–2 inserty
- Přiřadím výrobce (pokud neexistuje, založím) | 1–2 inserty
- Nastavím šablonu variant (vždy existuje, protože e-shop používá jen jednu) | 1 insert
- Přiřadím varianty (a pokud neexistují, založím a přiřadím) | 1–24 insertů
- Přidám do fronty požadavek na stažení obrázků (to dlouho trvá, proto samotné stahování řeším až jiným scriptem). | 1 insert
Každý produkt má tedy n-insertů do databáze a celkově zpracování jednoho produktu trvá +/- vteřinu. Produktů jsou stovky.
Výhodu to má v tom, že většina insertů se provede na začátku (varianty, kategorie) a další produkty už je jen používají. V selectech asi problém není, celkově je jich fakt málo a profilováním zaberou z celého scriptu max 2 sekundy.
No, aktuálně mě netrápí zvednout počet sekund zpracování a prostě počkat, ale spíše pro příště. Jak by se to dalo ulehčit? Existuje nějaká metoda, kam bych si ty inserty „uložil“ a pak je hromadně poslal do databáze? Nebo se to dělá jinak? :)
Děkuji za pomoc.