...
- Systémová štruktúra SV._System_ArchivPerformance je určená na monitorovanie výkonu archívu - viď popis jednotlivých stĺpcov. Odporúčame archiváciu stĺpcov PendingDbRequest, PendingStatReqest, PerformedDbRequest a PerformedCalcRequest (s vhodným filtrom) a prípadne vytvorenie archívnych štatistík nad týmito hodnotami (napr. 1-minútový a hodinový sumár).
- Tell príkaz PENDING_REQUESTS skopíruje frontu požiadaviek archívu do textového súboru. Ten je možné následne analyzovať a hľadať v ňom anomálie.
- Tell príkaz STATISTICS umožňuje zistenie množstva hodnôt, ktoré boli pre jednotlivé archívne objekty uložené do databázy za posledných N hodín. Výstupom príkazu je textový súbor, ktorý je možné následne importovať napr. do Excelu a zoradiť podľa posledného stĺpca. Následne je možné optimalizovať archívy s najväčším počtom hodnôt (nastavenie filtrov, prípadne obmedzenie počtu výpočtov pre vypočítané archívy).
- Príkaz STATISTICS nezachytí, pokiaľ bola jedna hodnota menená viackrát (napríklad vkladanie hodnôt zo skriptu). Preto existujú ladiace kategórie DBG.ARCHIV.MANUAL_INSERT_VALUE a DBG.ARCHIV.MANUAL_UPDATE_VALUE nastaviteľné pomocou procesu D2000 System Console v okne Debug info. Tieto kategórie zapínajú zobrazovanie výpisov o akciách INSERTARCHARR resp. UPDATEARCHVAL (a o ručnej modifikácii hodnôt z D2000 HI). Zobrazené sú ID archívnych objektov a vkladané hodnoty (v prípade akcie INSERTARCHARR prvá a posledná hodnota z vkladaného zoznamu).
- Ďalším problémom môže byť, že hodnoty opakovane vkladané zo skriptu spôsobia veľké množstvo následných prepočtov. V takom prípade je vhodné pred vkladaním zo skriptu najskôr vykonať čítanie (GETARCHVAL) a otestovať, či hodnota už v archíve nie je uložená. K dispozícii je aj ladiaca kategória DBG.ARCHIV.MANUAL_READ_BEFORE_IU, ktorá zapína túto funkčnosť priamo v obsluhe akcií INSERTARCHARR resp. UPDATEARCHVAL a ladiaca kategória DBG.ARCHIV.MANUAL_READ_BEFORE_IU.DBG, ktorá aktivuje výpisy, keď sa zistí, že vkladaná hodnota sa už v archíve nachádza. Pomocou týchto ladiacich výpisov je možné zistiť, pre ktoré objekty vkladané zo skriptu má zmysel implementovať čítanie pred zápisom. Výpisy majú tvar
Insert value $XXX (NAME) Count= N First value=VALUE_DETAILS Last value=VALUE_DETAILS
Update value $XXX Action=MANARCHINSERT VALUE_DETAILS - Ladiaca kategória DBG.ARCHIV.MONITOR.MV zapína výpisy najstarších hodnôt, ktoré sú vkladané akciami INSERTARCHARR resp. UPDATEARCHVAL. Výpisy majú tvar
ManualValues delay (Update) XXX sec for ID $YYY: VALUE_DETAILS
resp.
ManualValues delay (Insert) XXX sec for ID $YYY: VALUE_DETAILS
Pomocou tejto kategórie (zapnutie, vypnutie) je možné zisťovať či sa do archívu nevkladajú zo skriptu staré hodnoty, ktoré následne vyvolávajú prepočty závislých archívnych objektov. - Ladiaca kategória DBG.ARCHIV.MONITOR.NV zapína výpisy najstarších hodnôt, ktoré prichádzajú do archívu ako hodnoty objektov, ktoré idú do primárnych archívov. Výpisy majú tvar
NewValues delay XXX sec for ID $YYY
Pomocou tejto kategórie (zapnutie, vypnutie) je možné zisťovať či do archívu nechodia (napr. z komunikácie) hodnoty so starou časovou značkou, ktoré následne vyvolávajú prepočty závislých archívnych objektov.
Pozn: po vypnutí ladiacej kategórie sa zobrazí najdlhšie dosiahnuté oneskorenie. - Ladiaca kategória DBG.ARCHIV.MONITOR.OV zapína výpisy najstarších hodnôt, ktoré prichádzajú do archívu ako staré hodnoty (z komunikácie, z gatewaya), ktoré idú do primárnych archívov. Výpisy majú tvar
OldValues delay XXX sec for ID $YYY, source object $ZZZ
Pomocou tejto kategórie (zapnutie, vypnutie) je možné zisťovať či do archívu nechodia staré hodnoty, ktoré následne vyvolávajú prepočty závislých archívnych objektov.
Pozn: po vypnutí ladiacej kategórie sa zobrazí najdlhšie dosiahnuté oneskorenie. - Ladiaca kategória DBG.ARCHIV.OLDVAL.COMMIT súvisí s kategóriou DBG.ARCHIV.MONITOR.OV. Zapína výpisy pri aplikačných "commitoch" (OLDVALUE COMMIT), ktoré nasledujú po skončená zápisu starých hodnôt (čítaných z komunikácie, z gatewaya), ktoré idú do primárnych archívov. Výpisy majú tvar
Old value commit TransactId XXX <time_from, time_to>
Pomocou tejto kategórie je možné zisťovať, za aké obdobie do archívu chodia staré hodnoty, ktoré následne vyvolávajú prepočty závislých archívnych objektov (tiež za toto obdobie). - Výkon archívu na platforme Linux (najmä pre vypočítané a štatistické archívy) je možné výrazne zvýšiť nasadením optimalizovanej unixODBC knižnice libodbc.so.2.0.0. Navyše odporúčame nasadenie patchov archívu z októbra 2022 a 2021 a novších, ktoré majú implementované recyklovanie ODBC kurzorov, ktoré rieši pomalosti knižnice unixODBC spôsobené použitím dátových štruktúr (lineárne zoznamy) nevhodných pre aplikácie s niekoľkými desiatkami tisíc predkompilovaných kurzorov.
- Na všetkých platformách (operačných systémoch) odporúčame použiť pre potreby archivácie databázu PostgreSQL a venovať pozornosť správnemu nastaveniu jej parametrov.
- Zrýchlenie archívu pri čítaní (a teda aj pri prepočtoch štatistických a výpočítaných archívov) je možné dosiahnúť zapnutím izochrónnej cache.
- Zrýchlenie archívu pri zápise je možné dosiahnúť zvýšením počtu zapisovacích taskov - parameter WriteThreadsCount. Táto úprava vyžaduje rozšírenie licencie o High Performance Archiv.
- Zrýchlenie archívu pri čítaní je možné dosiahnúť zvýšením počtu čítacích taskov - parameter ReadThreadsCount. Táto úprava vyžaduje rozšírenie licencie o High Performance Archiv.
- Odporúčame zapnutie časových rezov aspoň pre štruktúrované archívy (DataTableSlices=2). Časové rezy zrýchlia a zjednodušia údržbu dátových tabuliek a indexov najmä pre prípad štruktúrovaných archívov.
- Tell príkaz FREEZE umožňuje zastaviť spracovanie dát v archíve na definovaný počet sekúnd a následne nahromadené požiadavky spracovať. Takto je možné uskutočniť výkonnostný test archívu (ak sa jedná o D2000 systém s redundantnými archívmi, tak ideálne na pasívnom archíve, aby pozastavenie archivácie nemalo vyplyv na funkčnosť).
...