Optimalizácia manažérskeho reportu nad databázou
Dopravná spoločnosť (dlhodobý klient nášho tímu)
Kľúčový manažérsky report padal a jeden beh trval okolo dvoch minút. Po sérii meraných iterácií sme ho zrýchlili až 10,4-násobne — pri vecne identických výstupoch.
Report 10,4× rýchlejší — s garanciou identických výstupov
Výzva
Report, ktorý denne používa manažment, náhodne padal na chybe a jeden beh trval okolo 2 minút; každý beh prehľadával celú tabuľku a extrémne zaťažoval databázový server. Tvrdá podmienka klienta: výstup sa nesmie zmeniť ani o riadok.
Riešenie
Príčinu sme určili meraním (exekučné plány, I/O štatistiky), nie odhadom. Pred prvou zmenou sme postavili automatizovaný test, ktorý každý variant porovnal s pôvodným výstupom riadok po riadku — do merania výkonu postúpil len variant s identickým výsledkom. Pracovali sme výhradne s read-only prístupom, bez zásahu do aplikácie a dát.
Výsledky:
- Zrýchlenie z ~2 minút na 11–24 sekúnd podľa dátového okna; najväčšie namerané 10,4×
- Záťaž databázového servera znížená o rád (zo ~145 miliónov čítaní na zlomok)
- Odstránené náhodné pády reportu
- Vecne identické výstupy overené automatizovaným porovnaním (7 meraných verzií, 140+ testovacích artefaktov)
- Odovzdaný testovací mechanizmus a diagnostické skripty použiteľné na ďalšie reporty
Merať, nie hádať
Skutočné úzke hrdlo sme neurčili odhadom, ale meraním — exekučnými plánmi a I/O štatistikami. Vyskúšali a zdokumentovali sme aj slepé uličky. Finálne riešenie kombinuje predfiltrovanie hlavnej tabuľky, cielené usmernenie optimalizéra, predagregáciu ťažkých podotázok a deterministické zoradenie pre reprodukovateľný výstup.
Garancia, že sa výstup nezmení
Report je podklad pre rozhodovanie, takže sa nesmel zmeniť ani o riadok. Preto sme ešte pred prvou úpravou postavili automatizovaný test: každý variant query sa spustil s rovnakými parametrami a jeho výstup sa strojovo porovnal s pôvodným, bunka po bunke. Do merania rýchlosti postúpil len variant so zhodným výsledkom. Práve takýto systematický prístup — generovať varianty, merať, automaticky porovnávať — umožňuje robiť optimalizácie rýchlo a s pomocou AI v procese práce, no vždy poctivo cez dôkaz.
Súvisiace projekty
Máte podobný projekt?
Povedzte nám, čo riešite — ozveme sa s návrhom, ako to spraviť rýchlo a merateľne.
Nezáväzná konzultácia