Optimalizace manažerského reportu nad databází
Dopravní společnost (dlouhodobý klient našeho týmu)
Klíčový manažerský report padal a jeden běh trval kolem dvou minut. Po sérii měřených iterací jsme ho zrychlili až 10,4-násobně — při věcně identických výstupech.
Report 10,4× rychlejší — se zárukou identických výstupů
Výzva
Report, který denně používá management, náhodně padal na chybě a jeden běh trval kolem 2 minut; každý běh prohledával celou tabulku a extrémně zatěžoval databázový server. Tvrdá podmínka klienta: výstup se nesmí změnit ani o řádek.
Řešení
Příčinu jsme určili měřením (exekuční plány, I/O statistiky), ne odhadem. Před první změnou jsme postavili automatizovaný test, který každý variant porovnal s původním výstupem řádek po řádku — do měření výkonu postoupil jen variant s identickým výsledkem. Pracovali jsme výhradně s read-only přístupem, bez zásahu do aplikace a dat.
Výsledky:
- Zrychlení z ~2 minut na 11–24 sekund podle datového okna; největší naměřené 10,4×
- Zátěž databázového serveru snížena o řád (ze ~145 milionů čtení na zlomek)
- Odstraněné náhodné pády reportu
- Věcně identické výstupy ověřené automatizovaným porovnáním (7 měřených verzí, 140+ testovacích artefaktů)
- Předaný testovací mechanismus a diagnostické skripty použitelné na další reporty
Měřit, ne hádat
Skutečné úzké hrdlo jsme neurčili odhadem, ale měřením — exekučními plány a I/O statistikami. Vyzkoušeli a zdokumentovali jsme i slepé uličky. Finální řešení kombinuje předfiltrování hlavní tabulky, cílené usměrnění optimalizéru, předagregaci těžkých poddotazů a deterministické řazení pro reprodukovatelný výstup.
Záruka, že se výstup nezmění
Report je podklad pro rozhodování, takže se nesměl změnit ani o řádek. Proto jsme ještě před první úpravou postavili automatizovaný test: každý variant query se spustil se stejnými parametry a jeho výstup se strojově porovnal s původním, buňka po buňce. Do měření rychlosti postoupil jen variant se shodným výsledkem. Právě takový systematický přístup — generovat varianty, měřit, automaticky porovnávat — umožňuje dělat optimalizace rychle a s pomocí AI v procesu práce, ale vždy poctivě přes důkaz.
Související projekty
Máte podobný projekt?
Řekněte nám, co řešíte — ozveme se s návrhem, jak to udělat rychle a měřitelně.
Nezávazná konzultace