5 návyků, které zrychlí vaše SQL dotazy
본문
Nakonec měřte. Bez čísel nepoznáte, zda změna pomohla, nebo uškodila. Zaznamenejte si dobu běhu před úpravou, po úpravě a sledujte ji i po nasazení do provozu. Výkon není jednorázový úkol, ale pokračující proces. Kdo pravidelně kontroluje plány a statistiky, tomu databáze zůstane rychlá i při růstu dat.
Indexy nejsou všelék. Pomáhají, když filtrujete nebo spojujete podle sloupců s vysokou selektivitou, ale každý další index zpomaluje zápisy a zabírá místo. Pokud dotaz filtruje podle více sloupců, zvažte složený index a pořadí sloupců v něm. Sloupec s rovností patří dopředu, rozsahový filtr na konec. Pozor na obalení sloupce funkcí, jako je LOWER(email) nebo DATE(created_at) — tím index přestává fungovat, dokud nevytvoříte odpovídající funkční index.
Většina pomalých dotazů nevzniká kvůli slabému hardwaru, ale kvůli tomu, jak jsou napsané. Než začnete přidávat paměť nebo měnit server, projděte si samotný dotaz a jeho plán provedení. Právě tam se skrývá největší prostor pro zrychlení. Následujících pět návyků zabere minimum času a přinese měřitelný rozdíl.
Typické chyby se opakují. Konfigurace se rozšíří o desítky voleb, kterým nikdo nerozumí. Nastavení se zdvojuje na více místech a při změně se jedno zapomene. Nástroje se aktualizují bez ohlášení a rozbijí běh u části týmu. Řešení je jednoduché: jedno místo pro každou oblast, změny procházejí stejnou kontrolou jako kód a každá úprava má popis, proč se děje. Nový člen týmu musí být schopen spustit projekt podle několika kroků a bez ptaní.
Každý odhad vývojového úkolu začíná u toho, co je vidět: nová obrazovka, úprava dotazu, oprava chyby. Jenže právě viditelná práce zabírá často menší část celkového času. Zbytek tvoří skryté činnosti, které se do odhadu nevejdou, protože se na ně v momentě plánování nemyslí. Výsledkem je úkol odhadnutý na dva dny, který reálně trvá čtyři. Nejde o špatný odhad viditelné části, ale o opomenutí té neviditelné.
Prvním krokem je popsat, co všechno se má sjednotit. Patří sem verze jazyka a závislostí, nástroje pro formátování a linting, proměnné prostředí, skripty pro spuštění a testování a konfigurace editoru. Sepište si tyto oblasti a u každé rozhodněte, zda ji chcete vynutit, nebo jen doporučit. Vynucené věci patří do repozitáře, doporučené stačí popsat v dokumentaci. Bez tohoto rozdělení skončíte buď s příliš volným režimem, nebo s nástrojem, který lidem překáží.
Pozor také na to, co vlastně testujete. Testovat privátní pomocné funkce nebo vnitřní implementaci vede k testům, které se rozbijí při každém refaktoringu, i když se chování navenek nezmění. Testujte rozhraní a výsledky, ne postup. A pokud používáte externí služby, nahraďte je v testech jednoduchými atrapami. Jinak budou testy pomalé a nespolehlivé. pytest k tomu nabízí monkeypatch a další nástroje, ale i prosté předání závislosti jako argumentu často stačí.
Při zavádění postupujte po malých krocích. Nejprve sjednoťte verze závislostí a spouštěcí skripty, teprve potom přidejte formátování a linting. Pokud začnete tím, že zapnete přísné kontroly nad celým kódem, vznikne hromada změn, kterou nikdo nedokáže v klidu zkontrolovat. Lepší je zavést nástroj, nastavit ho jako varování a teprve později přepnout na chybu. Stejně tak nové kontroly zavádějte vždy s automatickou opravou, aby se lidé nemuseli učit pravidla nazpaměť.
Než začnete přepisovat dotaz, zjistěte, co databáze skutečně dělá. Většina problémů nevzniká kvůli syntaxi, ale kvůli tomu, že optimalizátor nemá k dispozici vhodné statistiky nebo indexy. Prvním krokem je spustit EXPLAIN (nebo EXPLAIN ANALYZE, pokud jej databáze podporuje) a přečíst plán. Sledujte, zda jde o sekvenční průchod celou tabulkou, kde se očekávalo hledání podle indexu, a jaký je odhad počtu řádků proti skutečnosti. Rozdíl mezi odhadem a realitou je nejčastější příčina špatné volby joinu.
Nakonec si nastavte pravidelnou revizi. Jednou za čas projděte konfigurační soubory a zkontrolujte, zda všechny volby stále něco dělají. Odstraňte to, co se už nepoužíbyt v panelákuá, a sloučte to, co se překrývá. Sjednocená konfigurace není cíl, ale průběžná údržba. Když ji budete držet krátkou a srozumitelnou, tým přestane řešit prostředí a začne řešit skutečnou práci.
Konfiguraci uložte do repozitáře, ne do hlav Konfigurační soubory mají být součástí projektu a verzované spolu s kódem. Pokud nastavení žije jen v lokálním počítači, každý nový člověk ho musí objevit sám a každá změna se ztratí. Do repozitáře patří konfigurace nástrojů, soubor s verzemi závislostí a skripty pro běžné úkoly. Naopak citlivé údaje, přístupové klíče a cesty specifické pro konkrétní stroj tam nepatří. Ty se řeší přes proměnné prostředí a ukázkový soubor, který se do repozitáře přidá bez skutečných hodnot.
If you have any sort of questions concerning where and how you can utilize lineage2.hys.Cz, you could call us at the site.
댓글목록0
댓글 포인트 안내