Prvním krokem je kontrola indexů. Pokud často filtrujete podle sloupce, který není indexovaný, databáze musí projít celou tabulku. To je pomalé zejména u velkých tabulek. Vytvořte index na sloupcích, které se objevují v podmínkách WHERE, JOIN a ORDER BY. Pozor ale na přehnané indexování – každý index zpomaluje zápis a zabírá místo. Ideální je indexovat jen to, co skutečně potřebujete.<br>
<br>
<br>
<br>
Na co se zaměřit při konfiguraci a běžné prá<br>
<br>
<br>
<br>
Nejdůležitější částí testu není samotný kód, ale to, co testujete. Zaměřte se na hraniční případy: co se stane, když funkce dostane nulu, záporné číslo, prázdný řetězec nebo null? Právě tam se nejčastěji skrývají chyby. Napište tři testy pro jednu funkci: jeden pro běžný vstup, jeden pro hraniční hodnotu a jeden pro neočekávaný vstup. Tím zajistíte, že váš kód nefunguje jen pro příklad z tutoriálu, ale i v reálném nasazení.<br>
<br>
<br>
<br>
Jako první krok si zvolte testovací framework. Pokud píšete v Javě, sáhněte po JUnit, v Pythonu po pytestu, v JavaScriptu po Jestu. Nezáleží na tom, který si vyberete, důležitý je princip. Vytvořte nový soubor, který má v názvu slovo „test", aby ho framework automaticky našel. Do něj napište funkci nebo metodu, která začíná slovem „test". Uvnitř zavolejte testovanou funkci a výsledek porovnejte s očekávanou hodnotou pomocí aserce. Například: assert(secitani(2, 3) == 5).<br>
<br>
<br>
<br>
Asynchronní operace, jako je načítání dat z API nebo zápis do databáze, přinášejí do Reduxu vrstvu složitosti, která se dříve nebo později projeví na stavu aplikace. Nejčastější chybou je ukládání všech mezistavů, chyb a odpovědí do jednotlivých polí, což vede k rozsáhlým a nepřehledným reducerům. Řešením je zavést si jednotný vzor, který pokryje běžné stavy – čekání, úspěch a selhání – a ten pak použít pro všechny asynchronní akce.<br>
<br>
<br>
<br>
Praktickým doporučením je vytvořit si vlastní malou knihovnu – sadu funkcí, které obalují vaše API volání a vracejí akce pro všechny tři stavy. Tím se izolujete od konkrétní implementace a usnadníte si testování. V komponentách pak stačí zavolat jedinou funkci, která se postará o dispatch všech potřebných akcí. Tím se snižuje počet řádků kódu a zvyšuje čitelnost.<br>
<br>
<br>
<br>
Nakonec si zvykněte na limitování výsledků. Pokud potřebujete jen prvních sto řádků, použijte LIMIT. Databáze pak může ukončit zpracování dřív, než projde celou tabulku. Stejně tak se vyhněte přenosu obrovských datasetů do aplikace – zpracujte agregace na straně databáze. Pravidelně čistěte staré záznamy, ale pokud to není nutné, nearchivujte do stejné tabulky. Udržování tabulek v dobré kondici – bez fragmentace – také pomůže.<br>
<br>
<br>
<br>
Než napíšete první unit test, zapomeňte na představu, že testy jsou něco navíc. Jsou to spustitelné dokumentace vašeho kódu. Začněte u malé, izolované funkce, která nemá vedlejší účinky. Ideální je čistá funkce, která přijímá vstup a vrací výstup. Vyhněte se psaní testů pro třídy s databází, souborovým systémem nebo síťovými voláními. To je integrační testování a na to budete potřebovat jiné nástroje.<br>
<br>
<br>
<br>
Nezapomínejte ani na resetování stavu, když opouštíte stránku nebo měníte parametry. Pokud stav obsahuje stará data z předchozího požadavku, může to vést k zobrazení zastaralých informací. Vytvořte si proto akci typu resetRequest, která vrátí stav do počátečního stavu. Tím se vyhnete i problémům s pamětí, když se stav hromadí. Tento přístup je jednoduchý, škálovatelný a snadno pochopitelný pro nové členy týmu.<br>
<br>
<br>
<br>
Když test napíšete, spusťte ho a ujistěte se, že selže. To zní divně, ale je to klíčové. Pokud test projde hned napoprvé, nemáte jistotu, že opravdu testuje to, co chcete. Úmyslně změňte testovanou funkci a sledujte, že test začne padat. Pak změnu vraťte. Tento postup vám ukáže, že test má vypovídací hodnotu. Nakonec spusťte celou testovací sadu a sledujte, že je zelená. Pak se můžete pustit do dalšího testu. Postupně rozšiřujte pokrytí, ale nenechte se zmást čísly. Lepší je pět smysluplných testů než padesát, které jen opakují to samé.<br>
<br>
<br>
<br>
Další pastí je spoléhání na pořadí testů. Testy by měly být na sobě nezávislé. Pokud jeden test mění globální stav a druhý na něj navazuje, při změně pořadí testy selžou. Udržujte testy izolované. Pište je tak, aby každý běžel samostatně a vždy začínal z čistého stavu. Pokud testujete práci s daty, vytvořte data přímo v testu, nepoužívejte sdílené proměnné.<br>
<br>
<br>
<br>
<img src="https://www.freepixels.com/class=" style="max-width:400px;float:left;padding:10px 10px 10px 0px;border:0px;">Optimalizace SQL dotazů není jen otázkou rychlejší odezvy, ale také stability celé aplikace. Pomalý dotaz totiž blokuje zdroje, které potřebují ostatní operace. Nejčastější chybou bývá vybírání zbytečných sloupců pomocí hvězdičky a absence indexů na sloupcích používaných v podmínkách WHERE. Než začnete cokoli měnit, zapněte si logování pomalých dotazů a změřte si výchozí stav. K tomu se hodí příkaz EXPLAIN, který ukáže, jak databáze plánuje dotaz provést.