Kdy je čas přepsat dotazy GraphQL na novou cache?
Základem je omezit hloubku a šířku dotazů. GraphQL sám o sobě nebrání klientovi poslat dotaz, který rekurzivně projde celý graf. Nastavte maximální hloubku dotazu a maximální počet polí na úrovni serveru. Stejně důležité je sledovat, kolik různých resolverů se pro jeden dotaz spustí. Pokud jeden dotaz spustí stovky resolverů, je problém v návrhu schématu, ne v rychlosti databáze.<br>
<br>
<br>
<br>
Čemu se u keramiky raději vyhno<br>
<br>
<br>
<br>
Nakonec platí, že optimalizace nemá smysl bez zpětné vazby. Zaznamenávejte dobu trvání dotazu, počet volání databáze a velikost odpovědi. Když se tyto hodnoty zhorší, poznáte to dřív, než si toho všimnou uživatelé. GraphQL je nástroj, který dává klientovi moc, ale odpovědnost za výkon zůstává na serveru. Kdo to pochopí, ten nepotřebuje přidávat další servery.<br>
<br>
<br>
<br>
Většina týmů řeší výkon GraphQL tím, že přidá další vrstvu cachování nebo zvětší stroje. To je drahé a často zbytečné. Skutečný problém bývá jinde: dotazy posílají na server příliš mnoho polí, která klient nikdy nepoužije, a resolverů se ptají opakovaně na stejná data. Prvním krokem k optimalizaci proto není infrastruktura, ale měření. Zapněte si trasování jednotlivých resolverů a podívejte se, které dotazy spotřebovávají nejvíc času. Bez tohoto kroku ladíte naslepo.<br>
<br>
<br>
<br>
Než cokoli koupíte, položte vedle sebe kusy, které už máte, a zkuste z nich sestavit tři kompletní outfity. Pokud to nejde, paleta není hotová. U každé nové barvy si ověřte, že se dá zkombinovat alespoň se třemi věcmi, které už visí v šatníku. Tento test odhalí barvy, které vypadají hezky na ramínku, ale v praxi nemají s čím fungovat. Zároveň si všímejte podtónu – teplé a studené odstíny se nemíchají snadno. Když k sobě dáte studenou šedou a teplou béžovou, vznikne šedivý, unavený dojem, i když jsou obě barvy samy o sobě pěkné.<br>
<br>
<br>
<br>
Rozpuštěné máslo nebo jiný tuk přidávejte až po částečném vyhnětení, ne hned na začátku. Tuk obalí bílkoviny a zpomalí tvorbu lepku, což je žádoucí, ale jen když už je těsto částečně spojené. Vejce přidejte jedno po druhém a po každém důkladně zapracujte. Sůl patří do těsta vždy, i do sladkého — bez ní je chuť plochá a těsto se hůř tvaruje.<br>
<br>
<br>
<br>
Druhým častým problémem je příliš obecný návrh schématu. Když má jeden typ desítky volitelných polí, klienti si je začnou tahat všechna. Rozdělte schéma podle skutečných scénářů použití a přidejte varianty, které vracají jen to, co daná obrazovka potřebuje. Vyhnete se tak zbytečnému přenosu dat i práci na serveru.<br>
<br>
<br>
<br>
Prvním signálem bývá barva a konzistence oleje na měrce. Nový olej je jantarově průsvitný a řídký. Pokud má po vytažení měrky barvu tmavě hnědou až černou a je mazlavý, nejde nutně o katastrofu — olej má čistící schopnost a tmavne i proto, že v sobě drží nečistoty. Rozhodující je, zda je cítit po spálenině nebo v něm nejsou jemné kovové částice. Kápněte trochu na bílý papír: pokud se skvrna rychle rozpadá do okrouhlé mapky s ostrým okrajem, olej už ztratil své vlastnosti.<br>
<br>
<br>
<br>
Jak vyřešit čelo, když strop kles<br>
<br>
<br>
<br>
Problém N+1 se nevyřeší sám Nejčastější chybou je N+1 dotaz, kdy pro každý záznam v seznamu zavoláte databázi zvlášť. V GraphQL to vzniká nenápadně: resolver pole vrátí seznam a resolver uvnitř se ptá znovu. Řešením je dávkování přes dataloader nebo podobný mechanismus, který sesbírá požadavky v rámci jednoho tiknutí smyčky a odešle je najednou. Pozor na to, že dataloader musí být vytvořen pro každý požadavek zvlášť, jinak si klienti navzájem promíchají data a vzniknou těžko odhalitelné chyby.





