Když GraphQL začne zpomalovat, rozhoduje podoba dotazu

From shoutwiki.club
Jump to navigation Jump to search

Nakonec počítejte s tím, že období nerovnoměrného buzení přijde znovu při nemoci, růstovém spurtu nebo změně režimu ve školce. Nevracejte se k dřívějším pravidlům, která už neplatí, a nesnažte se situaci řídit hodinkami. Držte se základního rámce, upravujte detaily podle skutečného chování dětí a vydržte alespoň dva týdny u jedné změny. Vyrušení obou dětí najednou bývá menší problém než neustálé střídání přístupů.

Poslední věc, kterou lidé podceňují: délka ranní přípravy. Když jeden potřebuje patnáct minut a druhý padesát, plánujte podle toho, kdo má delší rutinu, a tomu dejte koupelnu jako prvnímu. Vyhnete se tak čekání ve dveřích a pohledům, které vypadají jako obvinění. Spaní v jedné místnosti není problém, pokud si ráno nepřipadáte jako na nádraží. Stačí si předem rozdělit roli, prostor a zvuk – a hádka o budík zmizí sama.

Následuje specifická část, tedy lehké lezení. Vyberte si jeden nebo dva snadné problémy nebo cestu výrazně pod svou úrovní a přelezte je s důrazem na plynulost, ne na výkon. Dobré je střídat delší výdrže na velkých chytech s krátkými pauzami a postupně zvyšovat náročnost. Pokud se objeví ostrá bolest v prstech nebo v rameni, rozcvičku přerušte – tupá únava je v pořádku, bolest ne. Mnoho lezců chybuje v tom, že rozcvičku odbydou na jednom chytu a pak hned zkouší svůj maximální projekt.

Častou chybou je spěch při otáčení. Nábytek se otáčí na místě jen tehdy, když pod ním leží kluzká podložka, jinak se musí přenést. Další chyba je podcenění prahu a přechodových lišt. Právě tam se nábytek zasekne a škrábne podlahu nejvíc. Řešením je přejezdová rampa z prkna nebo silného kartonu, která práh překlene. Po celou dobu platí, že podlaha musí být suchá a čistá – drobek písku pod fólií působí jako brusivo.

Hloubka dotazu a limity, které se vyplatí zavést předem Klient může poslat dotaz hluboko vnořený a vyplatit celý graf. Zavedení maximální hloubky a maximálního počtu polí na dotaz je levné a odhalí chyby dřív, než se dostanou k uživatelům. Počítejte ale s tím, že pevný limit se těžko ladí: příliš nízký zablokuje legitimní obrazovky, příliš vysoký nic neřeší. Lepší je kombinovat hloubku s cenou dotazu — každému poli přiřadit váhu a odmítnout požadavek nad rozpočet. Cenu pak spočítáte ještě před spuštěním resolverů.

Sledujte, zda jsou barvy teplé, nebo studené. Teplé tóny (béžová, okrová, cihlová) a studené (šedá, modrozelená, chladná bílá) se v jedné místnosti bijí, pokud mezi nimi není most. Tím mostem bývá dřevo, kov nebo textilie v neutrálním tónu. Typická chyba: chladná šedá stěna a k ní teplá oranžová židle bez jakéhokoli přechodu – výsledek vypadá jako dvě místnosti v jedné. Řešením je přidat kus v přírodním odstínu, který oba světy spojí.

Spaní dvou lidí v jedné místnosti vypadá jednoduše, dokud se nezačne řešit ranní vstávání. Jeden má budík na šestou, druhý do osmi. Jeden hned rozsvítí, druhý potřebuje ticho. Právě tady vzniká většina hádek, které pak zbytečně otravují celý den. Nejde přitom o kompromis „všichni vstaneme v sedm", ale o rozdělení ranních kroků tak, aby se navzájem nerušily.

První věc, která v GraphQL rozhoduje o rychlosti, není databáze ani server, ale tvar dotazu. Klient si často řekne o celý objekt i s vnořenými vazbami, protože to je pohodlné při vývoji. Na produkci se z toho stane několikanásobné načítání, které se sčítá. Než začnete cokoliv optimalizovat, zapněte si měření času na úrovni resolverů a logujte, které pole se volá kolikrát na jeden požadavek. Bez tohoto přehledu skončíte u hádání a přepisování schématu naslepo.

Ranní rituály bez hádek stojí na jedné věci: každý má svůj prostor a svůj čas. Není potřeba dělat všechno společně. Jeden si dá sprchu, druhý si ještě dvacet minut pospí. Dohodněte si ale jasné hranice, například že od určité hodiny už platí ticho a nikdo nepouští hlasitě hudbu ani nevaří. Pokud se domluva opakovaně nedodržuje, zapište si ji na papír a dejte na viditelné místo – ne jako trest, ale jako připomínku, že ráno se nemá řešit, co se dalo vyřešit večer.

Další vrstvou je ukládání do mezipaměti. GraphQL samo o sobě neumí cachovat odpovědi podle URL, protože vše jde na jeden koncový bod. Proto se vyplatí cachovat na úrovni resolverů podle skutečných vstupních parametrů a klíčovat podle identifikátorů, ne podle pořadí argumentů. U dotazů, které se často opakují, pomůže i trvalé ukládání dotazů: klient pošle krátký hash místo celého textu, server ho ověří proti registrovanému seznamu. Tím odpadá opakované parsování a validace.