1 post / 0 new
Guest (not verified)
5 návyků, které zrychlí GraphQL dotazy bez změny schématu

Dále se zaměřte na zeleň a osobní předměty. Živé rostliny zlepšují vzduch a dodávají prostoru život. Nemusíte mít drahé květiny – stačí nenáročné druhy, jako je břečťan, fíkus nebo obyčejná pažitka v květináči. Pokud na rostliny nemáte čas, použijte sušené květiny nebo větvičky. Na stěny pověste fotografie, obrázky nebo vlastní výtvory, které vás těší. Vyhněte se však přeplnění – několik málo předmětů s příběhem je lepší než stěna plná bezvýznamných dekorací.

Potah je další místo, kde se obě funkce bijí. U hraní se opíráte lokty a patami o stejné ploše, u spaní na tom samém místě ležíte celou vahou. Na sedák proto dejte pratelný návlek nebo přehoz, který sundáte a vyperete, místo abyste čistili celý potah. U tkanin sledujte, zda se práním nesrazí, jinak návlek po pár cyklech přestane sedět a bude se kroutit. U koženky se vyhněte čisticím prostředkům s rozpouštědly, jinak povrch ztvrdne a popraská právě v místech, kde se nejvíc ohýbá.

Nejčastější chybou je N+1 dotaz. Vzniká tak, že pole rodiče vrátí seznam a každý prvek si v resolveru potomka vytáhne vlastní data. Řešením je dávkování a cachování v rámci jednoho požadavku. Načtěte všechny potřebné identifikátory najednou, seskupte je a výsledek rozdělte zpět. Pokud používáte DataLoader nebo obdobný nástroj, nastavte cache s klíčem odvozeným z argumentů a kontextu požadavku, ne globálně. Globální cache mezi uživateli je bezpečnostní riziko, ne optimalizace.

Nábytek volte skládací a úzký. Plastová židle se rozpadne po dvou sezónách, dřevěná skládací vydrží déle a dá se na zimu složit a odnést. Místo klasického stolku použijte malý stolek, který se připevní na zábradlí z vnitřní strany. Nezabírá podlahu a při kávě je ve správné výšce. Pokud chcete úložný prostor, použijte lavici s prostorem uvnitř, ne samostatnou polici. Každý kus nábytku, který stojí na podlaze, ubírá místo na nohy.

Barva světla se udává v kelvinech a má větší vliv na únavu než jas. Pro práci se hodí neutrální bílé světlo kolem 4000 K, které nezkresluje barvy a neunavuje oči. Studené světlo nad 5000 K se hodí spíš k soustředěné práci přes den, ale večer působí rušivě. Teplé světlo pod 3000 K je příjemné k odpočinku, ne k práci s dokumenty. Pokud si nejste jistí, zvolte lampu s přepínačem barevných teplot a vyzkoušejte, co vám vyhovuje.

Prvním krokem je změřit skutečnou výšku stropu v místě, kam svítidlo plánujete. Neberte průměr celé místnosti, ale konkrétní bod — u šikminy nebo trámu se výška může lišit o desítky centimetrů. Odečtěte tloušťku podhledu, pokud nějaký je, a připočítejte případný závěs. Výsledné číslo je váš limit. U nízkých stropů počítejte s tím, že svítidlo by mělo viset minimálně 200 cm nad podlahou, ideálně 210–220 cm, aby pod ním pohodlně prošel i vyšší člověk.

Pozor na pole, která se tváří nevinně, ale spouštějí drahé operace. Agregace, fulltextové hledání nebo překlad názvů přes více tabulek patří do samostatného resolveru s vlastním limitem, ne do univerzálního načítače. Častou chybou je také předávání celého objektu do resolveru potomka místo jeho identifikátoru. Objekt zbytečně drží paměť a brání dávkování. Předávejte primitivní klíč a zbytek dohledejte dávkově.

GraphQL dotazy přestávají být rychlé ve chvíli, kdy resolver začne sahat na databázi pro každé pole zvlášť. Tento problém se obvykle neprojeví na vývojovém datasetu o deseti řádcích, ale na produkci s tisíci záznamů znamená stovky dotazů na jeden požadavek. Prvním krokem optimalizace není přepis schématu, ale měření. Zapněte trasování resolverů a podívejte se, které pole spotřebovává nejvíce času. Teprve pak má smysl cokoli měnit.

Hloubka dotazu a limity, které se nesmí ignorovat Bez omezení hloubky a složitosti dotazu vám kdokoli jedním požadavkem položí server. Spočítejte váhu dotazu ještě před spuštěním resolverů a nastavte tvrdý strop. Stejně důležité je omezit počet položek v seznamu na vstupu i na výstupu. V praxi se osvědčuje vracet data po stránkách s kurzorem místo offsetu, protože offsetové stránkování nutí databázi procházet a zahazovat stále více řádků. Kurzorové stránkování navíc drží stabilní výsledky i při vkládání nových záznamů během čtení.

Měření po každé změně je stejně důležité jako samotná optimalizace. Sledujte počet databázových dotazů na jeden GraphQL požadavek, dobu odezvy v percentilu 95 a velikost odpovědi. Pokud po úpravě klesne latence, ale vzroste spotřeba paměti, něco držíte zbytečně dlouho. A naopak, pokud se sníží počet dotazů, ale odpověď nabobtná, ztratili jste výhodu. Cílem není jeden dokonalý dotaz, ale předvídatelné chování pod zátěží.

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.

Navigation

User login