Když GraphQL začne zpomalovat, pomůže jiné plánování dotazů

From ewuswiki.club
Revision as of 12:04, 31 October 2026 by PattiOsullivan (talk | contribs) (Created page with "Po přesazení nezalévej vydatně. Substrát jen lehce navlhči a další zálivku odlož o několik dní, dokud rostlina neobnoví růst. První týden ji drž v polostínu,...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Po přesazení nezalévej vydatně. Substrát jen lehce navlhči a další zálivku odlož o několik dní, dokud rostlina neobnoví růst. První týden ji drž v polostínu, pak postupně přivykej na plné slunce. Během prvního měsíce nevysazuj do přímého poledního žáru a nehnoje — hnojivo by spálilo čerstvě porušené kořeny. Pokud se po dvou týdnech objeví nové zelené výhony, přesazení vyšlo. Když naopak listy opadávají a báze měkne, rostlinu vyjmi a zkontroluj, jestli v květináči nestojí voda.

Největší stres přichází na bezpečnostní kontrole. Batole nechápe, proč mu berete láhev s vodou, a začne se vzpouzet. Řešte to předem: láhev naplňte až po kontrole, nebo si vezměte prázdnou a dokrmte dítě před odletem. Pokud musíte projít s kočárkem, počítejte s tím, že ho budou řešit zvlášť, a dítě budete muset vzít do náruče. Připravte si předem, co půjde na pás — dítě v náručí, taška zvlášť, kočárek složený. Nespěchejte a nenechte se tlačit davem za sebou.

Nejčastější chyby jsou tři. První je lampa mířící přímo na obrazovku, která vytváří odlesky. Druhá je jediný ostrý zdroj světla v jinak tmavé místnosti, kvůli kterému se oči neustále přizpůsobují. Třetí je podcenění okolního světla: stropní svítidlo a lampa musí spolupracovat, ne soutěžit. Když to udržíte, bude se vám pracovat znatelně lépe i po několika hodinách.

Batchování a cachování místo opakovaných dotazů Tam, kde se resolver ptá na stejnou entitu vícekrát, použijte dávkování. Načtěte všechny potřebné identifikátory najednou a výsledky rozdělte mezi resolvery. Tím z jednadvaceti dotazů uděláte dva. Pozor na pořadí: dávkování musí proběhnout ve stejném cyklu zpracování požadavku, jinak se dávky rozpadnou a zůstane původní počet dotazů. U dat, která se nemění často, přidejte cache s krátkou platností a jasným klíčem. Nezapomeňte na invalidaci po zápisu, jinak budou uživatelé vidět zastaralá data a budete to složitě dohledávat.

GraphQL není pomalý sám o sobě. Problém obvykle vzniká ve chvíli, kdy resolver pro jedno pole spustí vlastní dotaz do databáze a klient si vyžádá seznam s dvaceti položkami. Server pak provede jednadvacet dotazů místo dvou. Než začnete optimalizovat, změřte, kde čas skutečně mizí. Zapněte trasování resolverů a podívejte se na dobu strávenou v databázi, v externích službách a ve vlastním kódu. Bez tohoto měření ladíte naslepo a často zrychlíte část, která není úzkým hrdlem.

Kluzká podložka pod nohy rozhoduje víc než sva

Nakonec se vyplatí omezit počet paralelních požadavků na jednoho klienta a zavést timeout na každý resolver. Bez timeoutu může jeden pomalý externí systém držet celý požadavek otevřený a postupně vyčerpat spojení. Sledujte počet dotazů na požadavek, dobu odezvy a podíl odpovědí, které narazily na limit složitosti. Tyto tři metriky obvykle odhalí regresi dřív než uživatelé. Optimalizace není jednorázový úkol, ale pravidelná kontrola toho, co klienti skutečně posílají.

Prvním konkrétním krokem je omezení hloubky a složitosti dotazu. Na serveru spočítejte, kolik polí a spojení klient požaduje, a nastavte strop. Klient, který si vyžádá pět úrovní vnořených seznamů, dokáže zahltit i dobře napsaný backend. Zároveň zaveďte limit velikosti odpovědi a ochranu proti cyklům. Typickou chybou je spoléhat pouze na autorizaci a zapomenout, že drahý dotaz může poslat i přihlášený uživatel.

Často opomíjenou částí je samotný dotaz od klienta. Mnoho aplikací posílá zbytečně široké výběry polí, protože je generuje knihovna nebo vývojář opíše z dokumentace. Zkontrolujte, která pole se skutečně používají, a zbytek odstraňte. Pomáhá také rozdělit velké dotazy na menší podle obrazovky, kterou uživatel skutečně vidí. Načítat data pro celou stránku najednou je pohodlné pro vývojáře, ale drahé pro server.

U malé kuchyně platí, že každý centimetr hloubky a šířky má cenu. Vestavné spotřebiče se proto vybírají podle normovaných rozměrů skříněk, ne naopak. Standardní šířka je 60 cm, ale do úzkých linek se hodí i 45 cm. Pokud plánujete troubu pod varnou desku, ověřte, že spodní skříňka snese hmotnost a že nad ní zůstane dost prostoru pro odvod tepla. U myčky zase počítejte s přívodem vody a odpadem v dosahu — prodlužovat hadice přes celou kuchyň je zdroj problémů.

Při výběru se zaměřte na hlučnost a spotřebu, protože v panelákové kuchyni se zvuk šíří do celého bytu. Myčka s nižší hlučností a trouba s dobrým těsněním dveří udělají víc než dražší design. Zkontrolujte také, zda jde spotřebič snadno vyjmout kvůli čištění a servisu. Pokud kupujete novou linku, nechte si u každého spotřebiče rezervu pár centimetrů na přívodní kabely a hadice. A nakonec: vše změřte dvakrát, jednou v obchodě a jednou doma, než zaplatíte.