N 1 dotazů v GraphQL, který zbytečně sráží celý výkon
Čtvrté pravidlo je o barvách a světle. Tmavé spáry a tmavý nábytek v malé koupelně opticky zmenšují prostor a ukazují každou kapku. Světlé barvy a lesklé povrchy prostor zvětší a snáz se čistí. Zrcadlo přes celou stěnu není jen dekorace, ale nástroj, který koupelně přidá hloubku. Jedna velká dlaždice místo mnoha malých znamená méně spár, a tedy méně práce s čištěním.
Optimalizace tedy neznamená přepisovat celé schéma. Stačí zavést dávkování, hlídat izolaci mezi požadavky a omezit složitost dotazů. Kdo tyto tři věci podcení, bude mít pomalý GraphQL i na rychlém serveru.
Nakonec zvažte, jestli bočnice vůbec potřebujete. U některých půdních postelí stačí pevný rošt vsazený do výklenku mezi krokve a bočnice jen překáží. Rozhodujte se podle toho, jak budete postel používat denně, ne podle toho, jak vypadá v katalogu. Funkční řešení na půdě je vždycky nižší, lehčí a jednodušší než to, které funguje v běžné místnosti.
Na co se v praxi vyplatí dávat pozor Dataloader musí být vytvořen pro každý požadavek zvlášť, ne jako globální instance. Sdílená cache mezi uživateli způsobí, že jeden dostane data druhého. Stejně tak nestačí dávat do jednoho dotazu všechna pole, pokud mají různé filtry nebo řazení. Někdy je lepší rozdělit dávky podle parametrů. Pozor také na rekurzivní dotazy, kde se pole odkazují sama na sebe; tam se snadno stane, že dávkování obcházíte nevědomky a problém se vrátí v jiné podobě.
Na závěr: vyhněte se časté chybě – příliš mnoha zrcadlům a lesklým povrchům. Lesk sice odráží světlo, ale v kombinaci s dekorem vytváří chaos. Stejně tak nepomůže přeplácaný nábytek s mnoha úchytkami a detaily. Držte se jednoduchosti, světlých barev a volné podlahy. Tyto zásady platí v obývacím pokoji, ložnici i kuchyni. Začněte jednou změnou a postupně přidávejte další – výsledek se dostaví během několika dní.
Další pastí je ignorování hloubky dotazu. Klient může poslat tak hluboký dotaz, že i s dávkováním vygeneruje tisíce operací. Omezte maximální hloubku a složitost dotazu na serveru. Pomůže také zakázat pole, která klient nikdy nepotřebuje, a nastavit timeout na úrovni resolveru. Bez toho se z jednoho nešťastného dotazu stane výpadek pro všechny.
Druhým trikem je práce se světlem. Závěsy věšte co nejvýš, ideálně až ke stropu, a nechte je splývat až k podlaze. Čím delší a širší závěs, tím vyšší a širší místnost vypadá. Stejně tak pomůže, když záclony nejsou v kontrastu se stěnou. Pokud máte radiátor pod oknem, nezakrývejte ho nábytkem – brání to cirkulaci teplého vzduchu a vytváří dojem přeplněnosti.
Váha, srst a dech prozradí víc než teploměr Jednou za dva týdny psa zvažte nebo alespoň prohmatejte žebra a pánev. Pohmatem zjistíte, zda neubývá svalová hmota, i když pes jí stejně. Ztráta váhy při normální chuti k jídlu je vážný signál — může jít o problémy se štítnou žlázou, trávením nebo nádorové onemocnění. Naopak náhlé přibírání bez změny krmiva bývá u psů spíš výjimkou a stojí za vyšetření. Všímejte si také srsti: matná, řídká nebo s holými místy naznačuje hormonální nebo kožní problém dřív, než se objeví svědění.
Valendy s bočnicemi a stísněný půdní prostor spolu souvisí víc, než se na první pohled zdá. Bočnice nejsou jen designový prvek, ale konstrukční díl, který drží tělo postele pohromadě a chrání matraci před posunem. Na půdě, kde šikminy ubírají místo u podlahy i u stropu, rozhoduje každý centimetr. Špatně zvolený typ bočnice vede k tomu, že postel buď nedrží, nebo zabírá víc místa, než je nutné.
Základem je seskupit požadavky na stejný typ dat do dávky. Místo abyste pro každou položku volali databázi zvlášť, posbírejte identifikátory a jeden dotaz proveďte hromadně. Tomuto vzoru se říká dataloader. Funguje tak, že v rámci jednoho tiku sbírá klíče, počká, až resolver dovrší sběr, a teprve pak odešle jediný dotaz s polem hodnot. Výsledek se rozdělí zpět mezi jednotlivé resolvery. Když to nastavíte správně, počet dotazů přestane růst s počtem položek.
Nezapomínejte měřit. Bez metrik nepoznáte, jestli optimalizace něco přinesla. Sledujte počet databázových dotazů na jeden GraphQL požadavek, latenci jednotlivých resolverů a dobu strávenou v dávkování. Teprve podle čísel zjistíte, kde je skutečný problém. Často se ukáže, že úzké hrdlo není v GraphQL vrstvě, ale v tom, jak jsou postavené dotazy do databáze.
Typická chyba je koupit postel s vysokými bočnicemi kvůli úložnému prostoru pod lůžkem. Na půdě tím získáte pár centimetrů na krabice, ale přijdete o možnost sednout si na postel, aniž byste se hlavou dotkli stropu. Další častá chyba je podcenění nosnosti půdní podlahy. Bočnice rozkládají váhu jinak než nohy a zatížení se přenáší do spojů. U starších trámových stropů je lepší volit lehčí konstrukci a zátěž rozložit do více bodů.