4 způsoby, jak udržet úložné valendy bez prachu
Položte čelo na zem a nasaďte ho na rám, ale neutahujte. Mezi čelo a zeď vložte distanční podložku o tloušťce o dva milimetry větší, než je změřená mezera. Čelo pak zatlačte ke zdi tak, aby se podložka mírně stlačila. Tím vznikne předpětí. Teprve potom utáhněte spojení čela s rámem – ale jen na doraz rukou, ne silou. Pokud použijete páku, strhnete závit nebo praskne dřevo.
Prach v úložných valendách vzniká hlavně tam, kde se ukládá oblečení nebo lůžkoviny a prostor není dostatečně uzavřený. Valenda má většinou otevřené boky, případně jen zásuvky, které nedoléhají. Prvním krokem není kupovat drahé doplňky, ale zjistit, kudy se prach dostává dovnitř. Projděte si rámy, mezery mezi zásuvkou a konstrukcí, spáry u podlahy. Často stačí přelepit nebo utěsnit jediné místo a situace se rapidně zlepší.
Základem je připravit trasu. Všechno, co leží v cestě, odneste pryč – nejen koberečky a kabely, ale i prahy a volně položené lišty. Podlaha musí být suchá a zbavená písku. Právě nečistoty způsobují většinu škod, protože se dostanou pod podložku a při tlaku se do povrchu zatlačí. Před samotným přesunem zkontrolujte i nohy nábytku: uvolněný hřebík, odštípnutá hrana nebo kovová plotna udělají stejnou škodu jako ostrý předmět. Drobnou opravu proveďte ještě předtím, než nábytek opustí své místo.
Kartáček sám o sobě nestačí. Mezi držákem a zubem vzniká prostor, kam se normální štětinky nedostanou. Používejte mezizubní kartáček v odpovídající velikosti a nit speciálně navlečenou pod drátkem, případně nit s pevným koncem. Bez tohoto kroku se kolem rovnátek usazuje plak, vzniká zápach a při sundání hrozí bílé skvrnky na sklovině. Po každém jídle, pokud to jde, ústa vypláchněte vodou a zbytky odstraňte alespoň kartáčkem bez pasty. Žvýkačky bez cukru pomohou se slinami, ale nenahradí čištění.
Řešením je dávkování a cachování na úrovni resolverů. Místo aby každý resolver volal databázi okamžitě, posbírá identifikátory a odešle jeden dotaz pro celou dávku. Tento přístup vyžaduje odložení vyhodnocení na konec aktuálního cyklu zpracování dotazu. V praxi se používá datová struktura, která drží frontu požadavků a po dokončení průchodu stromem je odešle najednou. Výsledky se pak přiřadí zpět jednotlivým polím.
Valendy se snadno udržují v čistotě především proto, že je pod nimi prázdný prostor. Žádné nohy, žádné záhyby, žádné zásuvky, kde se drží prach. Vzduch pod postelí volně proudí, takže se tam neusazuje vlhkost ani roztoči v takové míře jako u klasických postelí s pevným rámem. Úklid pak nezabere víc než pár minut týdně, pokud se dodrží několik zásad.
Nakonec měřte. Optimalizace bez měření je jen hádání. Sledujte latenci na úrovni jednotlivých resolverů, počet dotazů do databáze a velikost odpovědi. Zaměřte se na resolvery, které se volají nejčastěji, protože i malá úspora se násobí. GraphQL není magie, která problémy s výkonem vyřeší sama. Je to nástroj, který je odhalí, a je na vývojáři, aby je skutečně opravil.
Cacheování na úrovni polí má smysl jen tehdy, když data mezi požadavky nemění. U často aktualizovaných entit nastavte krátkou expiraci nebo cache vypněte. Persistované dotazy snižují režii na parsování a validaci, ale vyžadují, aby klient posílal hash místo celého textu. To se vyplatí u mobilních klientů s pomalým připojením. Pozor na to, že persistované dotazy komplikují vývoj a nasazení, pokud se verze klienta a serveru rozjedou.
Mezi časté chyby patří podkládání novin, které se rozmočí a rozpadnou, a používání mýdla nebo oleje jako kluzkého prostředku. Mastnota se vsákne do spár a podlaha pak klouže i po skončení stěhování. Stejně problematické je spoléhat na to, že se nábytek „jen popotáhne". Právě krátké přesuny bez přípravy způsobují nejvíc škod. Po dokončení nábytek postavte na suché filcové podložky a podlahu hned zkontrolujte. Malý škrábanec se dá ještě zamaskovat, ale hluboká rýha znamená výměnu celé desky nebo dlaždice.
Nejčastější chybou při optimalizaci GraphQL je ignorování problému N+1 dotazů. Typický scénář: resolver vrátí seznam uživatelů, a pro každého uživatele se samostatně dotazuje na jeho příspěvky. Pokud seznam obsahuje tisíc položek, databáze dostane tisíc a jeden dotaz. GraphQL sám o sobě tento problém neřeší, protože každé pole má vlastní resolver a ten se spouští nezávisle. Bez explicitního plánování se výkon zhroutí při prvním větším zatížení.
Druhou oblastí je hloubka a složitost dotazu. GraphQL umožňuje klientovi požadovat libovolně hluboké struktury a cyklické vztahy. Bez omezení stačí jeden dotaz a server spotřebuje veškerou paměť. Zaveďte maximální hloubku, maximální počet polí a analýzu složitosti ještě před spuštěním resolverů. Odmítněte dotaz, který překročí limit, místo abyste jej zpracovávali a doufali, že to doběhne.