Zrychlení indexování Laravel Scout pomocí scout:queue-import
Pokud jste někdy čekali hodiny nebo dokonce dny pro php artisan scout:import dokončit indexování modelů, nejste sami. Přesně to má vyřešit nový příkaz, který přichází do Laravel Scout: scout:queue-import.
Nový příkaz Artisan, na kterém se podílel @ste_bau byl zaveden v PR #929, a je navržen tak, aby výrazně urychlil import milionů záznamů do vyhledávacích indexů díky efektivnějšímu využití systému front.
Problém s scout:import
Stávající scout:import příkaz projde celou tabulku, načte a následně postupně indexuje části modelů. Zatímco u menších souborů dat to funguje dobře, u velkých aplikací je to bolestně pomalé. I když používáte fronty, úlohy se odesílají po jedné až po načtení dalšího kusu.
Řešení: scout:queue-import
Nový scout:queue-import příkaz zcela mění přístup. Místo iterace přes tabulku:
- Vyhledá MIN a MAX hodnoty klíče Scout vašeho modelu (obvykle se jedná o
id). - Rozdělí tento rozsah na části (výchozí: 500) a vytvoří více rozsahů.
- Depeše a práce na rozsah pracovníkům ve frontě.
Vzhledem k tomu, že se před zařazením do fronty nemusíte dotazovat na celou databázi, je tato metoda mnohem efektivnější, zejména pokud mohou pracovníci fronty pracovat paralelně. S více spuštěnými pracovníky fronty lze úlohy zpracovávat paralelně, což není možné při sekvenční povaze databáze. scout:import příkaz.
Příklad použití - php artisan scout:queue-import
php artisan scout:queue-import "App\\Models\\Post"
Můžete si také přizpůsobit velikost kousku:
php artisan scout:queue-import "App\\Models\\Post" --chunk=1000
Rozsah můžete také přizpůsobit:
php artisan scout:queue-import "App\Models\Post" --min=10 --max=100
Důležité poznámky
- Skautský klíč vašeho modelu musí být číselné a automaticky se zvyšující.. Pokud tomu tak není, příkaz vyhodí chybu a přeruší se.
- Mezery v posloupnosti ID mohou způsobit, že úlohy budou indexovat méně záznamů. (nebo vůbec) v tomto rozsahu.
- Musíte mít pracovníci ve frontě spuštěné a správně nakonfigurované pro zpracovávané úlohy.
Proč na tom záleží
Pokud pracujete s velkými soubory dat, scout:queue-import může změnit pravidla hry. Místo hodin nebo dnů čekání můžete rychle reindexovat miliony záznamů, aniž byste museli systém pozastavit.
Vyzkoušejte ji a urychlete svůj pracovní postup indexování vyhledávání pomocí Laravel Scout!