Vidíte historickú verziu tejto stránky. Pozrite si aktuálnu verziu.

Porovnať s aktuálnou verziou Zobraziť históriu stránky

« Predchádzajúce Verzia 2 Ďalej »

Proces D2000 Archív udržuje referenčnú integritu medzi archívnymi objektami nielen na úrovni objektov (napr. primárny archív H.Sec je používaný ako zdroj do štatistického archívu H.Sec_Avg1min, ale aj na úrovni položiek štruktúrovaných archívov (napr. piaty riadok stĺpcového archívu H.SV.Speed, ktorý archívuje jeden stĺpec štruktúry SV.Speed, je používaný ako zdroj do štatistického archívu H.SV.Speed_Avg1min).

Referenčná integrita na úrovni položiek štruktúrovaných archívov je dôležitá pri optimalizácii výpočtov. Napr. po užívateľskom editovaní archivovanej hodnoty v spomenutom piatom riadku  H.SV.Speed dôjde k automatickému prepočtu piateho riadku H.SV.Speed_Avg1min za minútu, v ktorej sa nachádza zmenená hodnota, ale nie je dôvod prepočítavať iné riadky štruktúrovaného archívu H.SV.Speed_Avg1min. Toto je aj dôvod, prečo vo vypočítaných archívoch musia výrazy obsahovať konkrétny index a nedá sa použiť na indexovanie lokálna premená (na rozdiel od štruktúrovaných počítaných bodov). Na riešenie tohto scenára bolo implementované makro LOOP_TEMPLATE, ktoré nahrádza cyklus (DO_LOOP) a D2000 Archív ho rozvinie:

  • po štarte procesu
  • po uložení vypočítaného archívneho objektu
  • po zmene veľkosti štruktúrovanej premennej, ktorá je vo vypočítanom archívnom objekte použitá.


Prepočet štatistických a vypočítaných archívnych objektov je vykonávaný v dôsledku:

  • Zmeny hodnoty primárneho archívneho objektu, ktorý je použitý v štatistickom alebo vypočítanom archívnom objekte.
    Explicitnej požiadavky na prepočet, ktorou môže byť tell príkaz RECALC (zadaný užívateľom alebo pomocou akcie COMMAND) alebo akcia CALCONDEMANDSTAT.


D2000 Archív teda udržuje automaticky konzistenciu dát archívnych objektov, pokiaľ majú nastavený Výpočet ako Priebežný, ale nie pokiaľ je nastavený Na požiadanie. V akcii CALCONDEMANDSTAT sa dá parametrom bCalcDepend = @False špecifikovať, že sa nemajú prepočítavať závislé objekty; podobne tell príkaz RECALC má voľbu NODEPEND s rovnakým významom.

Pokiaľ prepočítavame viacero archívnych objektov, tak vo výpočte dochádza k nasledovným optimalizáciam:

Optimalizácia jedného prepočtu

Ak je zapnutá izochrónna cache (parameter archívu IsochronousCache) optimalizujú sa výpočty, ktorých celý interval dát sa nachádza v archívnej cache. Ak je zapnutý parameter RecalcOptimize, optimalizujú sa aj dáta mimo izochrónnej cache. Optimalizovaný prepočet spočíva v načítaní pôvodných cieľových dát pred výpočtom a následne v porovnaní pôvodných dát s prepočítanými. Dáta, ktoré sú identické, nie sú mazané a znovu vkladané.

V ideálnom prípade (ak sú vypočítané úplne rovnaké dáta, ako boli predtým) optimalizácia zabráni vymazaniu intervalu dát v cieľovom archíve a ich opätovnému vloženiu. V menej ideálnom prípade dôjde k tomu, že aspoň časť dát je identická. Vtedy budú mazané a vkladané dáta od prvej rozdielnej hodnoty až po koniec intervalu.

V prípade potreby sa dá optimalizácia vypnúť nastavením archívu RTM.ARCHIV.OPTIMIZE_RECALC (štartovacím parametrom /E-RTM.ARCHIV.OPTIMIZE_RECALC alebo za behu v System Console).

Optimalizácia viacerých prepočtov

Pre potreby bilancovania podporných služieb v systéme MARI a PICASSO bola do procesu D2000 Archív zavedená v októbri 2025 ďalšia optimalizácia. Pokiaľ sa počíta viacero na sebe závislých archívnych objektov a celý prepočet jedného z archívnych objektov skončil ako identický (t.j. nebolo treba mazať ani vkladať nové hodnoty), tak na ňom závíslé štatistické archívne objekty tiež nebudú prepočítavané. Podobne, ak všetky výpočty zdrojových archívov (štatistických, vypočítaných), ktoré vstupujú do vypočítaného archívu, boli vyoptimalizované, tak dotyčný vypočítaný archív sa tiež nebude počítať.

Táto optimalizácia môže spôsobiť problém v jednom prípade: ak časť vypočítaných/štatistických archívov má nastavený Výpočet ako Priebežný a na nich závislé zase Na požiadanie. Tie prvé sa počítajú aj priebežne, automaticky; takže pri užívateľsky vyvolanom prepočte budú vyoptimalizované - a následné výpočty závislých archívov (počítaných na požiadanie) sa neuskutočnia. Tento problém má možné riešenia:

  • Tell príkaz RECALC má voľbu FORCEONDEMAND, ktorá vynucuje prepočet závislých archívnych objektov, ak majú nastavený Výpočet ako Na požiadanie.
  • Prekonfigurovanie všetkých závislých archívov ako priebežne počítaných (toto môže mať ale negatívny vplyv na výkon D2000 Archívu).
  • Prekonfigurovanie všetkých závislých archívov ako počítaných na požiadanie (toto môže spôsobiť problém, ak sú niektoré z vypočítaných archívoch potrebné priebežne).
  • Pridanie triggra (primárneho archívu) do výrazu na požiadanie počítaných archívov. Takýto trigger spôsobí, že budú vypočítané, keďže primárny archív sa síce nepočíta, ale vždy vráti, že nebol zoptimalizovaný.





  • Žiadne štítky