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
Dotazy v GraphQL zbytečně brzdí aplikaci: kde se to láme
Strona
Dyskusja
polski
Czytaj
Edytuj
Edytuj źródło
Wyświetl historię
Narzędzia
Narzędzia
przypnij
ukryj
Działania
Czytaj
Edytuj
Edytuj źródło
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!
Rohové lišty a profily se v malých prostorech používají hlavně k tomu, aby zakryly spáry, srovnaly rohy a ochránily hrany před otlučením. Jenže právě tady vzniká nejčastější chyba: lidé volí masivní ozdobné profily, které mají „něco řešit", a výsledek je opačný — každý centimetr navíc v rohu opticky zužuje místnost a ještě víc ji člení. Pokud jde o malý byt, je lepší vsadit na co nejtenčí, jednoduché a pokud možno barevně splynulé řešení.<br><br>První místo, kde se výkon láme, je hloubka vnoření. Dotaz, který přes vztahy sáhne o pět úrovní níž, se na první pohled tváří nevinně, ale na serveru znamená řetězení resolvers a často i mnoho samostatných dotazů do úložiště. Zaveďte tvrdý limit hloubky a komplexity dotazu a odmítejte ho ještě před spuštěním resolverů. Limit nastavte podle reálných potřeb klientů, ne podle toho, co schéma technicky dovolí. Stejně důležité je ošetřit rekurzivní fragmenty — bez kontroly se z nich snadno stane nekonečná smyčka, která shodí celý proces.<br><br> Jak vyřešit vnitřní členění, aby se dalo snadno obsluhov<br><br>Teplé a studené tóny můžete míchat, ale potřebujete most. Tím bývá neutrální prvek: dřevo, len, kámen nebo šedá. Jeden teplý akcent (terakota, hořčice, tmavě červená) a jeden studený (petrolejová, šedomodrá) v jedné místnosti fungují, pokud je mezi nimi dost neutrální plochy. Když je dáte přímo na sebe, budou se hádat. Mostem může být i koberec v přirozeném odstínu, který oba tóny spojí.<br><br> Jak otestovat barvu před malován�<br><br>Druhou častou chybou je vracení velkých seznamů bez stránkování. GraphQL sám omezování nenutí, takže klient snadno požádá o všechny záznamy a pole s tisíci položkami projde. Zaveďte povinné stránkování založené na kurzoru a nastavte maximální velikost stránky na serveru. Klientovi to nevadí, pokud mu dáte stabilní řazení a jasný způsob, jak pokračovat na další stránku. Naopak offsety u velkých a měnících se dat přinášejí duplicity a výpadky, se kterými se pak složitě bojuje.<br><br>Většina týmů řeší výkon GraphQL API ve chvíli, kdy aplikace začne znatelně zpomalovat. Jenže problém obvykle nevznikl v databázi ani v serveru — vznikl v dotazu, který si klient sestavil sám a nikdo ho nezkontroloval. GraphQL dává klientovi svobodu žádat přesně to, co potřebuje, a právě tahle svoboda je nejčastějším zdrojem zbytečné zátěže. Pokud chcete, aby API zůstalo rychlé i při rostoucím počtu polí a vnořených vztahů, musíte začít u návrhu schématu a u toho, co klient skutečně posílá.<br><br>Nejlepší pozice bývá podélně podél stěny, která není frekventovaná – typicky protilehlá ke dveřím nebo ke skříni. Pohovka tak nezasahuje do přirozené cesty mezi dveřmi, postelí a pracovním stolem. Vyhněte se umístění přímo naproti dveřím: každý vstup do pokoje pak vypadá jako překážková dráha a dítě si začne stěžovat, že se mu do pokoje nic nevejde.<br><br>Nezapomeňte ani na sledování provozu. Bez metrik podle konkrétního dotazu a pole nepoznáte, které resolvery jsou pomalé. Logujte dobu zpracování po jednotlivých fázích a označujte pomalé dotazy, ať už podle trvání, nebo podle komplexity. Persistované dotazy, tedy předem registrované operace namísto volného textu, zásadně zjednodušují cacheování i ochranu proti zneužití. A při zavádění změn schématu myslete na to, že staré dotazy klientů mohou přestat fungovat — proto pole nejdřív označte jako zastaralá a odstraňte je až po ověření, že je nikdo nepoužívá.<br><br>N+1 není mýtus, je to pravidlo Největší propad výkonu obvykle nezpůsobí samotný dotaz, ale způsob načítání dat v resolverech. Když resolver pro každou položku seznamu volá databázi zvlášť, počet dotazů roste lineárně s počtem vrácených záznamů. Řešením je dávkování a cachování na úrovni requestu: posbírejte klíče z celé úrovně a načtěte je jedním dotazem, výsledek držte po dobu zpracování jednoho požadavku. Pozor na dvě věci — batch nesmí míchat nesouvisející typy a cache nesmí přežít request, jinak si podáte data jiného uživatele.
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