Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

Proces D2000 DBManager ponúka niekoľko úrovní debugovania:

Kotva
vypisy_chyb
vypisy_chyb
Výpisy chýb

...

Interaktívne zisťovanie otvorených deskriptorov pomocou Tell príkazu SHOW_HANDLE. Syntax príkazu je:

...

  • HOBJ objektu Databáza, ktorého otvorené spojenia sa majú zobraziť
  • maska názvu objektu Databáza, ktorého otvorené spojenia sa majú zobraziť
  • ID - číslo spojenia alebo číslo transakcie (vrátené ako parameter handleIdent_Int akcie DB_TRANS_OPEN), ktoré sa má zobraziť
  • parameter "DETAIL" spôsobí, že za výpisom spojenia bude nasledovať výpis deskriptorov (vo formáte ako pre SHOW_HANDLE) otvorených na tomto spojení

...

  • pre každú databázu, vyhovujúcu vstupnému filtru, jej názov a počet otvorených spojení
  • pre každé spojenie:
    • názov databázy
    • číslo spojenia
    • 4554760 stav spojenia
    • počet otvorených deskriptorov
    • dobu od poslednej vykonanej operácie (alebo slovo busy a informácie o vnútornom stave spojenia, ak na spojení práve prebieha operácia. Príklad: busy (U_EXECDIRECT1/D_EXECDIRECT2))
    • informáciu, či je spojenie transakčné, netransakčné alebo netransakčné rezervované pre browsery
    • pre transakčné spojenie aj číslo transakcie (parameter handleIdent_Int akcie DB_TRANS_OPEN)
  • pre každý deskriptor (parameter "DETAIL") výpis vo formáte SHOW_HANDLE

Príklad výpisu (spojenia v databázach začínajúcich sa na Te spolu s výpisom deskriptorov):

...

Poznámka: Pre spojenia, ktoré sú v status avail, udáva informácia o transakčnosti a číslo transakcie starý údaj (transakcia bola už ukončená). Takéto spojenie môže byť recyklované podľa potreby ako transakčné alebo netransakčné.

...

Po skončení príkazu sa vypíšu do chybového logu databázy podrobné informácie o príkaze. Príklady:


17:54:00.116 16.02 con 1:Query execution duration 00:00:01.103 SQL_CONNECT TransactId 10319, dbTransId 0, Handle 1104492764, connectString {}, DbTableId 1473 {DB.MATERIAL}, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 10864;BT_connect_OnClick: 248}

...


17:54:18.926 16.02 con 1:Query execution duration 00:00:01.105 SQL_PREPARE TransactId 10320, dbTransId-1, Handle 10319, Statment {SELECT ID_MATERIAL FROM material }, bBindIn FALSE, FetchSize 1, colNr 17, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 10864;BT_prepare_OnClick: 279}

...


17:55:59.113 16.02 con 2:Query execution duration 00:00:01.110 DB_TRANS_OPEN TransactId 10325, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 10864;BT_db_trans_open_OnClick: 543}
  

Význam jednotlivých polí:

...

  • maska názvu objektu Databáza, ktorého spojenia sa majú monitorovať
  • minimálna dĺžka trvania databázových akcií, ktorá sa má sledovať.
    Hodnota 0 vypína sledovanie doby vykonávania databázových akcií.

Rozdiel medzi SET_WATCHDOG a SET_WATCHDOG_QUEUE je tento:
príkaz SET_WATCHDOG sleduje operácie, ktorých vykonávanie v databáze trvalo dlhšie ako špecifikovaný čas. Pokiaľ ale viacero klientov zdieľa to isté automatické (netransakčné) spojenie, z pohľadu klienta môže databázová akcia trvať dlho kvôli tomu, že čaká vo fronte, v ktorej je pred ňou ešte jedna alebo viacero databázových akcií od iných klientov. Z toho dôvodu bol implementovaný príkaz SET_WATCHDOG_QUEUE, ktorý monitoruje celkový čas vybavenia databázovej akcie od vloženia do príslušnej fronty až po ukončenie.

...

18:01:21.579 16.02 con 1:Query total duration 00:00:01.130, execution 00:00:00.105 SQL_EXEC_PROC TransactId 10331, dbTransId-1, Statement {{ call TESTF_IN_OUT (?) }}, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 11332;BT_exec_proc_OnClick: 626
}
18:02:39.149 16.02 con 1:Query total duration 00:00:01.103, execution 00:00:00.202 SQL_CONNECT TransactId 10335, dbTransId 0, Handle 1104492765, connectString {}, DbTableId 1473 {DB.MATERIAL}, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 11453;BT_connect_OnClick: 248
}
18:02:42.437 16.02 con 1:Query total duration 00:00:01.103, execution 00:00:00.035 SQL_DISCONNECT TransactId 10335, dbTransId-1, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 11453;BT_connect_OnClick: 248
}
18:02:51.163 16.02 con 1:Query total duration 00:00:01.105, execution 00:00:00.654 SQL_PREPARE TransactId 10337, dbTransId-1, Handle 10336, Statement {SELECT ID_MATERIAL FROM material }, bBindIn FALSE, FetchSize 1, colNr 17, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 11453;BT_prepare_OnClick: 279
}
18:02:54.275 16.02 con 1:Query total duration 00:00:01.110, execution 00:00:00.239 SQL_FETCH TransactId 10338, dbTransId-1, Handle 10336, MaxRows 100, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 11453;BT_fetch_OnClick: 299
}
18:02:57.009 16.02 con 1:Query total duration 00:00:01.104, execution 00:00:00.109 SQL_FREE Handle 10336, Comment {NS1PHUM3_HI.HIS;S.sql_TEST( 9473) 11453;BT_free_OnClick: 325
}
  

Význam jednotlivých polí: viď popis v rámci sekcie SET_WATCHDOG.

Kotva
time_statistics
time_statistics
Tell príkaz TIME_STATISTICS

...

  • Z dôvodov optimalizácii rýchlosti a vzájomného neblokovania sa klientov vytvára proces D2000 DBManager viac ako jedno automatické spojenie na databázu. Automatické spojenia môžu byť vytvárané ihneď po štarte procesu D2000 DBManager, takže sú už predpripravené na použitie (keďže napr. u databázy Oracle môže trvať vytvorenie spojenia aj 1 sekundu alebo dlhšie, čo sa prejaví oneskorením v skriptoch ESL). Počet predpripravených spojení je možné nastaviť pomocou procesu D2000 CNF na objekte typu Databáza pomocou parametra PRE (Preconnects). Maximálny počet spojení je možné obmedziť parametrom MAX (Max connects), pričom hodnota 0 obmedzenie vypína. Ak proces D2000 DBManager spotrebuje všetky spojenia, tak ďalšie volania snažiace sa o vytvorenie spojenia (DB_TRANS_OPEN) vrátia chybu DBM_MAX_CONNECTIONS.
  • Pomocou parametra NTC je možné nastaviť maximálny počet spojení automaticky vytvorených. Pokiaľ parameter NTC nie je zadaný, tak:

    • na automatické spojenia sa použije najviac 1/4 z Max connects
    • ak je Max<4, vytvorí sa 1 automatické spojenie
    • ak je Max=0, vytvorí sa najviac 5 automatických spojení (prednastavená hodnota)

    Ak už proces D2000 DBManager dosiahol maximálny zadaný počet automatických spojení, po ďalšej požiadavke (napr. netransakčný SQL_CONNECT, PG_CONNECT alebo DB_CONNECT) sa nevytvorí nové spojenie, ale použije sa jedno z existujúcich. Parameter NTC má význam ani nie tak pre proces D2000 DBManager, ako pre databázu, ku ktorej sa pripája, aby nevyčerpal limit spojení, ktoré má databáza nastavené.
  • Z dôvodu ďalšieho zrýchlenia práce, proces D2000 DBManager
    Kotva
    recyklacia
    recyklacia
    recykluje existujúce spojenia. Ak bolo spojenie uzavreté (napr. DB_TRANS_CLOSE) alebo nie je používané (vzniklo ako dôsledok SQL_CONNECT a prebehlo SQL_DISCONNECT), tak je označené ako voľné. Voľné spojenia môžu byť opätovne využité, čo ušetrí čas pripájania sa k databáze a urýchli prácu skriptov. Voľné spojenia, ktoré nepatria medzi predpripravené a nie sú použité, budú ukončené po uplynutí času, ktorý je daný v parametri Close v sekundách(predpripravené spojenia sa neukončujú). Nastavením tohto parametra na zápornú hodnotu je možné prikázať procesu D2000 DBManager, aby voľné spojenia neukončoval - v takomto prípade bude ich množstvo iba stúpať a bude odzrkadľovať stav počas maximálnej záťaže procesu D2000 DBManager.
  • Kotva
    brc
    brc
    Kvôli zrýchleniu operácií v prístroji browser je od verzie D2000 8.00.009 možné vyhradiť pre tieto operácie (otváranie browsera, prechod medzi stránkami a akcia DB_REFRESH_TABLE) spojenia pomocou parametra BRC - Rezervované browser spojenia.
    Výhodou je, že na týchto vyhradených spojeniach nebudú vykonávané iné netransakčné operácie (ktoré môžu trvať niekoľko sekúnd a viac) a akcia DB_REFRESH_TABLE ako aj prechod medzi stránkami bude rýchlejší, ako keď sú browser operácie vykonávané na automatických spojeniach.
    Poznámka: Ak je hodnota parametra BRC - Rezervované browser spojenia rovná nule, browser operácie sú vykonávané na automatických spojeniach, ako to bolo pred implementáciou tohto parametra.
  • Kotva
    logovaci_subor
    logovaci_subor
    Ladiace a informačné výpisy: Proces D2000 DBManager umožňuje zobraziť niekoľko úrovní ladiacich výpisov, ktoré sú popísané v samostatnom dokumente.
  • Ukončovanie procesu D2000 DBManager v dôsledku "zamrznutia" niektorého spojenia: D2000 DBManager obsahuje vnútorný watchdog, ktorý každú minútu zisťuje, či niektoré spojenie na databázu nie je "zamrznuté" (t.j. obslužný thread sa nevrátil z volania ODBC rozhrania). V takomto prípade zapíše informáciu do logovacieho súboru. Ak watchdog zistí takúto situáciu n-krát po sebe (pričom n je nastaviteľné parametrom WDT), ukončí proces D2000 DBManager. Prednastavené hodnota WDT=0 znamená, že proces D2000 DBManager sa neukončuje.
  • Nastavovanie parametrov pre spojenia vytvárané pomocou príkazu SQL_CONNECT s použitím tzv. konektovacieho stringu: keďže tieto spojenia sa neviažu na objekt typu Databáza, ale priamo sa odvolávajú v konektovacom stringu na DSN, nastavenie parametrov Debug a Connect timeout je možné realizovať priamo v konektovacom stringu.

    Príklad: "UID=meno užívateľa;PWD=heslo užívateľa;DSN=meno DSN;ACD;Debug;CLOSE=300"

    Vytvorené spojenie bude mať zapnuté vypisovanie ladiacich informácií a nepoužívané spojenie sa zavrie po 300 sekundách. Voľné spojenie je možné znovu použiť iba vtedy, ak má rovnaký konektovací string ako vytvárané spojenie.

    Ladiace a informačné výpisy týchto spojení, ktoré sú "nezávislé" (independent) na objektoch typu Databáza, vyzerajú nasledovne:
    08:59:45.710 Indep# 3 DSN=TestX:SQL_FETCH BEG
    08:59:45.710 Indep# 3 DSN=TestX:SQL_FETCH END


    log informuje, že "nezávislé" spojenie č. 3, ktorého DSN je "TestX", vykonalo akciu SQL_FETCH.

    Ak aspoň jedno existujúce nezávislé spojenie má zapnuté vypisovanie ladiacich informácií prostredníctvom parametra Debug v konektovacom stringu, tak pri periodickom vypisovaní sa v logu objavia aj informácie o nezávislých spojeniach:
    09:14:27.752 Db Independent connects WD: 1 (1/0/0) cons:normal- 1,

    log informuje o tom, že existuje jediné nezávislé spojenie a to je používané.
    Čísla v zátvorkách udávajú počty netransakčných, transakčných a browser spojení.

...