Przejdź do zawartości
Menu główne
Menu główne
przypnij
ukryj
Nawigacja
Strona główna
Ostatnie zmiany
Losowa strona
Pomoc z MediaWiki
Mazovia
Szukaj
Szukaj
Utwórz konto
Zaloguj się
Narzędzia osobiste
Utwórz konto
Zaloguj się
Strony dla anonimowych edytorów
dowiedz się więcej
Edycje
Dyskusja
Edytujesz
Pomalé dotazy GraphQL: vrstvení resolverů, které zabíjí výkon
Strona
Dyskusja
polski
Czytaj
Edytuj
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
Wyświetl historię
Ogólne
Linkujące
Zmiany w linkowanych
Strony specjalne
Informacje o tej stronie
Uwaga:
Nie jesteś zalogowany. Jeśli wykonasz jakąkolwiek zmianę, Twój adres IP będzie widoczny publicznie. Jeśli
zalogujesz się
lub
utworzysz konto
, Twoje zmiany zostaną przypisane do konta, wraz z innymi korzyściami.
Filtr antyspamowy.
Nie
wpisuj tu nic!
Na co se ptát dřív, než zaplatí<br><br>Persisted queries a omezení toho, co se dá poslat Trvalé dotazy jsou v roce 2026 spíš nutnost než optimalizace. Klient pošle místo celého textu dotazu jen identifikátor a server ví předem, jaký tvar dotazu očekávat. Získáte tím tři věci: menší provoz, možnost dotaz předem zkontrolovat a hlavně konec toho, aby kdokoli posílal ad hoc struktury proti produkci. Pozor ale na verze — pokud se text dotazu změní a identifikátor zůstane, dostanete nesoulad, který se projeví až při běhu. Zaveďte kontrolu hashe při každém nasazení a staré identifikátory držte v karanténě, dokud se klienti nepřesunou.<br><br>Seznam nestačí, potřebujete jídelníč<br><br>Kdy je lepší dvě oddělené matrace než jedna velká? Užší prostor často znamená, že každý potřebuje jinou tvrdost. Dvě matrace vedle sebe v jedné konstrukci vyřeší rozdílné nároky na záda a zároveň zabrání tomu, aby se pohyb jednoho přenášel na druhého. Pozor na mezery mezi matracemi, do kterých se dá zapadnout. Řešením je spojovací pruh látky nebo matrace s pevným okrajem. Pokud máte pouze jednu matraci, investujte do kvalitního chrániče, který sjednotí povrch a zabrání posunu prostěradla. To je levnější než měnit celou sestavu.<br><br>Druhá past spočívá v tom, že vývojáři optimalizují dotaz, ale ignorují, co klient skutečně posílá. GraphQL umožňuje klientovi vyžádat libovolně hluboký výběr, a pokud server nemá limit hloubky a složitosti, jeden dotaz může položit celý backend. Zaveďte měření složitosti ještě před spuštěním resolverů: každé pole přiřaďte váhu, násobení u seznamů a pevný strop na celkový součet. Odmítněte dotaz dřív, než se vůbec dostane k datům.<br><br>Digestoř: filtr namočte na půl hodiny do horké vody s octem a lžící sody, potom opláchněte a nechte důkladně uschnout. Mokrý filtr je sám o sobě zdrojem pachu. Troubu a plechy zbavíte mastnoty pastou ze sody s trochou vody; naneste, nechte působit přes noc, setřete a nakonec přetřete hadrem namočeným v octě. Uvnitř chladničky postavte misku se sypkou sodou, kterou každé dva týdny vyměňte, a jednou za čas otřete police roztokem vody a octa v poměru tři ku jedné.<br><br>Poslední věc, která v malém bytě rozhoduje nejvíc, je rituál ukládání. Postel, která slouží i přes den jako gauč, potřebuje každý večer krátkou přípravu: převléknout povlak, srovnat vrstvy, odložit věci na jedno místo. Udělejte z toho dvouminutový zvyk, ne projekt na hodinu. Pokud se večer opakovaně hádáte o tom, kdo co uklidí, rozdělte role natrvalo. Jeden připraví lůžko, druhý zkontroluje větrání a zhasne. Malý prostor neodpouští chaos, ale dobře nastavené návyky v něm fungují stejně dobře jako ve velké ložnici.<br><br>Větrání a teplota rozhodují o tom, jak se bude spát ve dvou v jedné místnosti víc než cokoli jiného. Dva lidé produkují znatelně víc tepla a vlhkosti. Před spaním vyvětrejte krátce a intenzivně, ne celý večer na mikroštěrbinu. Přes noc nechte proudit vzduch z chodby nebo jiné místnosti, pokud to dispozice dovolí. V zimě se vyhněte přímému foukání na hlavu. Typická chyba je přitápět na vysokou teplotu a pak si stěžovat, že se v noci budíte. Chladnější vzduch s dostatečnou přikrývkou funguje spolehlivěji.<br><br>U federace a více služeb se vyhněte tomu, aby se stejná entita načítala několikrát v jednom stromu. Resolver by měl nejdřív zjistit, jestli data už nejsou v kontextu požadavku, a teprve pak jít dál. Sdílený cache klíčovaný podle typu entity a identifikátoru výrazně sníží počet volání mezi službami. Nepoužívejte ale globální cache bez rozlišení tenanta — to je klasická chyba, která prosakuje data mezi uživateli.<br><br>Nejčastější příčina pomalého GraphQL není databáze ani síť, ale takzvaný N+1 problém na úrovni resolverů. Když pole vrací seznam a každý prvek si pod sebou tahá vlastní data, počet dotazů roste lineárně s velikostí výsledku. Řešením je dávkování: sesbírejte všechny požadované identifikátory v rámci jednoho cyklu vyhodnocení a načtěte je jedním dotazem. V praxi to znamená zavést dávkovací vrstvu mezi resolvery a datový zdroj, která sloučí požadavky podle klíče a výsledky rozdělí zpět. Bez tohoto kroku nepomůže ani sebelepší indexace.<br><br>Nakonec měřte. Bez trasování jednotlivých resolverů uvidíte jen celkovou dobu a budete hádat. Zaznamenejte počet volání datového zdroje na jeden požadavek, dobu strávenou v každém poli a podíl dotazů, které narazily na limit složitosti. Tato trojice čísel ukáže, jestli je problém v dávkování, v příliš benevolentních limitech, nebo v tom, že klient posílá zbytečně široké výběry. Optimalizace bez těchto dat je jen přepisování kódu naslepo.
Opis zmian:
Wszelki wkład na Mazovia może być edytowany, zmieniany lub usunięty przez innych użytkowników. Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.
Zapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach
domeny publicznej
lub kompatybilnych (zobacz także
Mazovia:Prawa autorskie
).
PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!
Anuluj
Pomoc w edycji
(otwiera się w nowym oknie)
Przełącz ograniczenie szerokości strony