Když GraphQL začne brzdit, pomůže jiné dávkování dotazů

Z Mazovia
Wersja z dnia 11:21, 14 lis 2026 autorstwa FloySwint784 (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Jak přesazení provést, aby rostlina nezahynu

Proč je pokojová teplota někdy lepší než ledni

Dalším vodítkem je tvar rostliny. Když se střed vyholí a výhony se poléhají do stran, nejde vždy o stárnutí. U levandule v nádobě to bývá známka toho, že kořeny vyplnily celý objem a nemají odkud brát živiny. Rostlina pak investuje energii do přežití, ne do kvetení. Pokud po seříznutí na jaře obrazí jen slabě a květenství je řídké, je čas podívat se na kořeny.

Materiál volba závisí na tom, jak dlouho chcete kurník mít. Pro trvalé stavby se osvědčuje dřevo natřené proti vlhkosti, nejlépe modřín nebo smrk s impregnací, a střecha z trapézového plechu nebo asfaltové šindele. OSB desky jsou levné, ale bez důkladného nátěru a krytí je sežere vlhkost během několika sezón. Cihla nebo tvárnice vydrží nejdéle, ale zvyšují nároky na základy a v zimě se v nich hůř udržuje sucho. Kovové kurníky rychle kondenzují vodu, takže je nutné je zevnitř obložit dřevem nebo alespoň izolovat strop.

Přezrálé kusy nevyhazujte, ale zpracujte je dřív, než se zkazí. Nakrájené ovoce zamrazte v porcích na plechu, teprve pak ho přesypete do uzavíratelné nádoby. Zmrazené kusy se neslepí a snadno se použijí do smoothie, kaše nebo koláčů. Stejně dobře poslouží ovoce na kompot, džem nebo přesnídávku bez cukru. Když plánujete nákup, berte raději menší množství častěji a držte se toho, co skutečně sníte.

Na závěr se vyplatí zavést test výkonu jako součást pipeline. Definujte několik reprezentativních dotazů, měřte jejich dobu a počet dotazů do databáze a porovnávejte s předchozím během. Změna, která zvýší počet databázových dotazů u jednoho požadavku, by měla spadnout v Review. GraphQL je silný nástroj, ale optimalizace není jednorázová akce; je to pravidelná kontrola toho, co klienti skutečně posílají.

Když se aplikace s GraphQL začne zpomalovat, většina týmů nejdřív sáhne po cachování nebo po silnějším serveru. Ve skutečnosti bývá úzké místo jinde: v podobě dotazů. GraphQL dovoluje klientovi popsat přesně to, co potřebuje, ale taky mu dovoluje žádat věci nešikovně. Než začnete přidávat hardware, projděte si, jak vypadají dotazy v produkci. Zapněte si logování doby trvání resolverů a sledujte, které pole trvá nejdéle. Bez měření se ladění zvrhne v hádání.

Častou chybou je také příliš obecný návrh schématu, kde jeden typ zastupuje všechno a resolver se rozhoduje podle argumentů. Takový resolver často načítá data, která klient vůbec nepotřebuje, jen aby zjistil, co má vrátit. Rozdělte typy podle skutečného použití a resolver pište tak, aby znal dopředu, která pole budou vybrána. Knihovny pro práci s GraphQL umožňují získat seznam vybraných polí; využijte to k výběru sloupců v dotazu do databáze.

Druhým praktickým krokem je odklad nedůležitých částí odpovědi. Pole, která nejsou potřeba k prvnímu vykreslení, označte direktivou pro odložené načtení a nechte klienta, ať si je vyžádá zvlášť. Tím zkrátíte dobu do prvního obsahu a snížíte zátěž v momentě, kdy je server nejvytíženější. Pozor na to, že odložená pole musí být vždy nullable; pokud je klient nedostane, nesmí aplikace spadnout.

Dávkování a odkládání jako každodenní praxe Typickým problémem je N+1 dotaz: resolver pro každou položku seznamu zavolá databázi zvlášť. Řešením je dávkování přes dataloader, který sesbírá klíče z jednoho cyklu událostí a pošle jeden dotaz s podmínkou obsahující všechna ID. Dataloader ale musí být vytvořen pro každý požadavek zvlášť, ne globálně. Sdílená instance mezi požadavky prosakuje data mezi uživateli a je to bezpečnostní chyba, ne jen výkonnostní. Dataloader také nikdy nekombinujte s cachí bez rozlišení uživatele nebo oprávnění.

Prvním krokem je omezit hloubku a šířku dotazů už na úrovni schématu. Nastavte limit hloubky podle toho, jak hluboko strom opravdu potřebujete, a přidejte i limit složitosti, který zohlední násobky u seznamových polí. Klient, který si vyžádá seznam s tisíci položkami a u každé další vnořený seznam, dokáže položit databázi během jediného požadavku. Limit hloubky sám o sobě nestačí, protože jeden dotaz může být mělký a přesto drahý.