Když SQL táhne za kratší konec: Jak zkrotit technický dluh

Dluh, který nevidíme, ale platíme Když jsem přebíral firemní DWH na MSSQL, technický dluh byl znát. Noční dávky trvaly celé hodiny a reporty se zpožďovaly do dopoledne. Do optimalizací jsme se proto pustili hned od prvního dne: technický dluh totiž není jen IT problém, ale byznysové riziko s cenovkou v hodinách čekání a ztracených příležitostech.

1. Změřte, než začnete opravovat

Bez čísel je optimalizace střelba potmě. Proto si nejprve nastavte:

  • Baseline — log délky běhu klíčových procedur a SSIS balíčků.
  • Technické metriky — CPU‑time, I/O wait, tempdb usage.
  • Byznysový dopad — kdo čeká na data a kolik hodin zpoždění skutečně stojí.

2. Rychlé výhry: cílená analýza a lokální cache

  • Granulární logování — instrumentovali jsme každou proceduru: časujeme vytvoření každé #temp tabulky, každý mezivýpočet i blok kódu.
  • Odhalení úzkého hrdla — analýza ukázala, že ~30 procedur provádí desítky SELECTů přes linked server do těch samých sedmi tabulek.
  • Inkrementální noční load — tabulky jsme přesunuli do lokální DB (delta‑load); v procedurách se teď dotazujeme přímo na kopie.
  • Covering indexy na míru — pro nejčastější dotazy jsme vytvořili cílené covering indexy.

 

Výsledek? Noční dávka zrychlila o dvě hodiny — zhruba ze 7 na 5 hodin — ještě dřív, než jsme sáhli na složitější refaktor logiky.


3. Když rychlá náplast nestačí: refaktorujte business logiku

Optimalizace není jen o query plánu. Následující zásahy přinesly největší zisky:

  • Omezili jsme datový rozsah — mnoho dotazů zbytečně skenovalo celé roky historie. Zpřísnili jsme WHERE filtry a pracujeme jen s obdobím, které má pro reporting smysl.
  • Ranní vs. noční přepočty — v noci (mimo špičku) se tabulky kompletně přepočítají, ráno se zpracuje pouze posledních 6 měsíců. To výrazně snižuje zátěž a zrychluje ETL okno.
  • Přepis kurzorů — řádkové smyčky jsme nahradili set‑based CTE a window funkcemi, což zkrátilo běh procedur o desítky procent.

 

Snimek-obrazovky-2025-07-10-084923.png


4. Automatizace a kontinuální hlídání. Automatizace a kontinuální hlídání

Technický dluh se vrátí, pokud nemáme guard‑rails:

  • CI/CD pro databáze (Azure DevOps, Flyway).
  • Výkonové testy v pull requestu — každá změna procedury spustí sadu „zlatých“ dotazů.
  • Policy‑Based Management sleduje velikost indexů, fragmentaci a backup lag.

Tím se z jednorázového projektu stává proces; když příští kvartál přibude nový datový zdroj, ETL okno se znovu nerozplizne do rána.


5. Co to celé přineslo?

Snimek-obrazovky-2025-07-10-085203.png

Ranní reporting teď dorazí ještě před prvním meetingem a odpovědi na ad‑hoc dotazy jsou otázkou minut, ne hodin.


Závěr a výzva k akci

Technický dluh v MSSQL není špinavý kout serverovny, který stačí jednou za rok vyluxovat. Je to živý organismus, který roste s každým hot‑fixem a novým reportem. Trápí vás pomalé dávky nebo zpomalené reporty? Udělejte první krok: změřte realitu a přepočítejte, kolik vás ten dluh stojí.