Porovnávané verzie

Kľúč

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

D2000 DBManager - ladenie a debugovanie

Ladiace informácie a informácie o chybách procesu D2000 DBManager sa zobrazujú v okne procesu a ukladajú sa do logovacieho súboru v podadresári TRACE aplikačného adresára. Ak sa proces D2000 DBManager spúšťa ako SELF.DBM, vytvoria sa logovacie súbory DBManager.log a DBManager_ERR.log. Ak sa spúšťa ako MENO.DBM, vytvoria sa logovacie súbory DBManager_meno.log a DBManager_meno_ERR.log.
Ak veľkosť logovacieho súboru dosiahne preddefinovanú hodnotu 10 MB, bude premenovaný na DBManager_meno_prev.log (DBManager_meno_ERR_prev.log) a vytvorí sa nový logovací súbor. Predchádzajúci súbor DBManager_meno_prev.log (DBManager_meno_ERR_prev.log) sa zmaže.

...

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

Kotva
vypisy_chyb
vypisy_chyb
Výpisy chýb

...

Chyby sa zapisujú do logovacieho súboru končiaceho _ERR.log vždy. Pri chybovej správe je väčšinou uvedený aj SQL príkaz, ktorý ju spôsobil.

...

Poznámka 2: Jednotlivé ESL akcie pre prácu s databázou (cez proces D2000 DBManager) si ukladajú informáciu, odkiaľ boli volané z ESL kódu. Pri výskyte chyby je potom vypísaná aj táto informácia (v príklade na začiatku logu) okrem samotnej informácie o zistenej chybe.

Kotva
vypisy_akcii
vypisy_akcii
Výpisy akcií

...

Podrobnejšie výpisy do logovacieho súboru sa zapisujú po zapnutí voľby Debug v konfigurácii objektu typu Databáza. Log obsahuje informácie o jednotlivých akciách ESL (typ akcie, začiatok a koniec), o databáze a spojení, na ktorom akcia prebieha.

...

10:29:32.068 11.08 Db TestDB table Time_Test periodic delete BEG
10:29:32.162 11.08 Db TestDB table Time_Test periodic delete END

Kotva
vypisy_dlhsich_akcii
vypisy_dlhsich_akcii
Výpisy akcií trvajúcich dlhšie ako zadaný počet sekúnd

...

Výpisy o trvaní operácií dlhších ako zadaný počet sekúnd sa do logovacieho súboru zapisujú po nastavení parametra Loguj dlhšie operácie ako (sec) na nenulovú hodnotu v konfigurácii objektu typu Databáza. Log obsahuje informácie o spojení, na ktorom akcia prebehla, lokalizáciu akcie v ESL skripte, volajúcu správu DbManager-a a čas trvania akcie v milisekundách.

...

19:27:37.286 01.07 con 1:DBS_READ BEG
19:27:37.297 01.07 con 1:DBS_READ END
19:27:37.298 01.07 con 1:DBS_READ
SELF.EVH;E.Test( 1934) 1230;: 16
- M.DB.CDB_CTRLMSG - 122[ms]

Kotva
dbg.dbmanager
dbg.dbmanager
Výpisy so zapnutou ladiacou kategóriou DBG.DBMANAGER

...

Podrobnejšie výpisy do súboru po zapnutí ladiacej kategórie DBG.DBMANAGER pomocou procesu D2000 System Console v okne Debug info. Každý výpis akcie obsahuje navyše informácie o volaných procedúrach v procese D2000 DBManager, ktoré sú užitočné pre vývojárov, a texty vykonávaných SQL príkazov.

...

Podrobnejšie príklady výpisov s odlišnosťami pre ODBC a OCI verziu DBManagera nájdete v príkladoch výpisov logovacieho súboru.

Kotva
dbg.dbmanager.data
dbg.dbmanager.data
Výpisy so zapnutou ladiacou kategóriou DBG.DBMANAGER.DATA

...

Podrobnejšie výpisy do súboru po zapnutí ladiacej kategórie DBG.DBMANAGER.DATA pomocou procesu D2000 System Console v okne Debug info. Každý výpis vykonávanej akcie obsahuje navyše výpis hodnôt, ktoré sa zapísali do databázy alebo sa z nej načítali.

...

Podrobnejšie príklady výpisov s odlišnosťami pre ODBC a OCI verziu DBManagera nájdete v príkladoch výpisov logovacieho súboru.

Kotva
dbg.dbmanager.dbctx
dbg.dbmanager.dbctx
Výpisy so zapnutou ladiacou kategóriou DBG.DBMANAGER.DBCTX

...

Podrobnejšie výpisy po zapnutí ladiacej kategórie DBG.DBMANAGER.DBCTX pomocou procesu D2000 System Console v okne Debug info.

...

15:01:14.114 01.08 con 1:SQL_SELECT BEG
15:01:14.121 01.08 con 1: D2000_PROCESS_PARAMS - SET PARAMS "NAME=VERSION27" of dbCtxId = 55
15:01:14.125 01.08 con 1:SQL_SELECT END

Kotva
dbg.dbmanager.dbctx.csv
dbg.dbmanager.dbctx.csv
Výpisy so zapnutou ladiacou kategóriou DBG.DBMANAGER.DBCTX.CSV

...

Podrobnejšie CSV výpisy po zapnutí ladiacej kategórie DBG.DBMANAGER.DBCTX.CSV pomocou procesu D2000 System Console v okne Debug info. Do logovacieho súboru sa zapisujú až po zapnutí voľby Debug v konfigurácii objektu typu Databáza. Log obsahuje štruktúrované CVS informácie o jednotlivých parametroch nastavených v kontexte daného klienta spúšťajúceho DB akcie cez proces D2000 DBManager.

...

15:28:22.051 01.08 con 1:SQL_SELECT BEG
15:28:22.054 01.08 ;D2000_PROCESS_PARAMS;1;SQL_SELECT;1006;tdb_task_000000000905BB40;55;TRUE;1;2;set;TRUE
15:28:22.056 01.08 con 1:SQL_SELECT END

Kotva
dbg.dbmanager.sql_connect
dbg.dbmanager.sql_connect
Výpisy so zapnutou ladiacou kategóriou DBG.DBMANAGER.SQL_CONNECT

...

Zapnutie tejto ladiacej kategórie bude mať rovnaký účinok, ako pridanie "DEBUG" do parametra connectString vo všetkých volaniach akcie SQL_CONNECT, teda zapisovanie ladiacich informácií akcie SQL_CONNECT a všetkých ďalších akcií, ktoré používajú toto spojenie, do logu procesu D2000 DBManager.

Poznámka: Ladiaca kategória DBG.DBMANAGER.SQL_CONNECT neovplyvňuje tie akcie SQL_CONNECT, ktoré používajú odkaz na objekt typu Databáza alebo Tabuľka, lebo na tie sa vzťahuje parameter Debug v konfiguračnom okne objektu Databáza. Ovplyvňuje iba akcie SQL_CONNECT, ktoré na spojenie používajú connectString, t.j. textový pripojovací reťazec, ktorého debugovanie sa nedá zapnúť v procese D2000 CNF, ale iba pridaním DEBUG do parametra connectString.

Kotva
dbd
dbd
Výpisy so zapnutým štartovacím parametrom /DBD<pocet_poziadaviek>

...

Vo verzii 7.01.023 bolo implementované ladenie výkonnosti automatických (netransakčných) spojení. Ak je spustený DBManager s parametrom /DBD<pocet_poziadaviek>, do logu po štarte zapíše riadok:
Performance logging is ON.

...

Poznámka 2: Transakčné spojenia výkonnostne ladiť netreba, keďže jedno transakčné spojenie sa v súčasnosti používa iba sekvenčne z jedného eventu.

Kotva
show_handle
show_handle
Tell príkaz SHOW_HANDLE

...

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

...

CONO connection established (IPC_TCPIP)
Receiv TELL Command : SHOW_HANDLE
===================================================================
->Db TestDB con 1:table MAT_GROUP: <HI mycomp,S.Test_DBmanager>
->Db TestDB con 2:trans TestDB: <S.Test_DBmanager: 220>
===================================================================


D2000 DBManager má dva otvorené deskriptory. Prvý je na spojení č. 1, deskriptor je typu deskriptor tabuľky a otvorený je v browseri tabuľka MAT_GROUP. Deskriptor je otvorený zo schémy S.Test_DBmanager z procesu D2000 HI, ktorý beží na počítači mycomp.
Druhý deskriptor je na spojení č. 2, deskriptor je typu deskriptor transakcie a otvorený je z 220-eho riadku skriptu v schéme S.Test_DBmanager.

Kotva
show_connect
show_connect
Tell príkaz SHOW_CONNECT

...

Interaktívne zisťovanie otvorených spojení pomocou Tell príkazu SHOW_CONNECT. 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
    • Ladenie a debugovanie 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):


Receive TELL Command : SHOW_CONNECT Te* DETAIL
===================================================================
->Db TestDB 2 cons
->Db TestDB con 1:normal, 1 handles, idle 04:24:682, non-transact
->Db TestDB con 1:table   MAT_GROUP: <HI mycomp,S.Test_DBmanager>
->Db TestDB con 2:normal, 2 handles, idle 20:037, transact 1053
->Db TestDB con 2:trans TestDB: <S.Test_DBmanager: 220>
->Db TestDB con 2:table   MAT_GROUP: <S.Test_DBmanager: 109>

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é.

Kotva
set_watchdog
set_watchdog
Tell príkaz SET_WATCHDOG

...

SQL operácie, ktorých samotné vykonávanie trvalo dlhší čas, je možné sledovať tell príkazom SET_WATCHDOG. Syntax príkazu je:

...

Príklad výpisu (z logu databázy, takže názov databázy sa neuvádza):


16:45:28.763 24.11 Performance WD: con 3: operation lasts 27 sec in U_EXECDIRECT1/D_EXECDIRECT6
16:45:29.767 24.11 Performance WD: con 3: operation lasts 28 sec in U_EXECDIRECT1/D_EXECDIRECT6
16:45:30.782 24.11 Performance WD: con 3: operation lasts 29 sec in U_EXECDIRECT1/D_EXECDIRECT6
16:45:31.798 24.11 Performance WD: con 3: operation lasts 30 sec in U_EXECDIRECT1/D_EXECDIRECT6
16:45:34.829 24.11 Performance WD: con 3: operation lasts 2 sec in U_EXECDIRECT1/D_EXECDIRECT6
  

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}
  

...

Poznámka: Spustenie sledovania SQL operácií je zapísané v logu DBManagera. Výpis obsahuje zoznam databáz, ktoré vyhovujú maske database_mask. Pri prvom volaní tell príkazu SET_WATCHDOG obsahuje výpis aj informáciu o spustení sledovacieho tasku.


16:45:27.735 24.11 ===================================================================
16:45:27.736 24.11 ->Db DBC_ROVE_OD 2 cons
16:45:27.737 24.11 ->Db DBC_KOMP_OD 3 cons
16:45:27.742 24.11 Starting performance watchdog task for database operations
16:45:27.743 24.11 ===================================================================
  

Pokiaľ bol na všetkých databázach nastavený parameter seconds na hodnotu 0, sledovací task prestane monitorovať databázy a v logu sa objaví hláška:


17:37:41.588 24.11 Performance watchdog: going to sleep (no more databases to monitor)
  

Pri ďalšom zapnutí sledovania už sledovací task beží (takže ho nie je potrebné spúšťať) a v logu sa objaví iba hláška o aktivácii:


18:45:28.749 24.11 Performance watchdog: starting monitoring
  

Kotva
set_watchdog_queue
set_watchdog_queue
Tell príkaz SET_WATCHDOG_QUEUE

...

Databázové akcie, ktorých vykonávanie včítane času stráveného vo frontách DBManagera trvalo dlhší čas, je možné sledovať tell príkazom SET_WATCHDOG_QUEUE. Syntax príkazu je:

...

  • 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.

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


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

...

Tell príkaz vypíše štatistiky trvania jednotlivých typov databázových akciá pre jednotlivé databázy alebo pre jednotlivé tabuľky (pokiaľ je špecifikovaný parameter DETAIL). Pre každý typ databázovej akcie (otvorenie browsera, transakcie, trieda akcií zahŕňajúca DB_* a DBS_* akcie atď) sa vypíše celkový počet vykonaných akcií, celkové a priemerné trvanie a maximum trvania jednej akcie spolu s komentárom (ESL call chain).
Štatistiky s nulovým počtom vykonaní sa nevypisujú.
Pokiaľ je špecifikovaný aj parameter DETAIL, po výpise štatistík pre databázu nasleduje výpis štatistík pre všetky tabuľky, ktorých rodičom je databáza.
Príklad výpisu:


09:36:28.023 21.02 ===================================================================
09:36:28.026 21.02 ->Db MesDB total time 000 00:00:40.572
09:36:28.029 21.02  Operation BROWSER_OPEN executions 3 total duration 000 00:00:03.686, average 000 00:00:01.229, maximum 000 00:00:01.468 by 
09:36:28.032 21.02  Operation DB_CONNECT executions 2 total duration 000 00:00:02.207, average 000 00:00:01.104, maximum 000 00:00:01.104 by NS1PHUM3_HI.HIS;S.Test_DBmanagera( 9424) 10510;DB_CONNECT_OnClick: 109

09:36:28.034 21.02  Operation DB_CONTROL executions 15 total duration 000 00:00:16.589, average 000 00:00:01.106, maximum 000 00:00:01.129 by con 1:DBS_READ  
NS1PHUM3_HI.HIS;S.TestDbRefresh( 10105) 10429;StressTest_OnClick: 20

09:36:28.037 21.02  Operation DB_REFRESH_TABLE executions 2 total duration 000 00:00:02.526, average 000 00:00:01.263, maximum 000 00:00:01.266 by Triggered by commit of NS1PHUM3_HI.HIS;S.TestDbRefresh( 10105) 10429;StressTest_OnClick: 10

09:36:28.040 21.02  Operation DB_TRANS_OPEN executions 4 total duration 000 00:00:04.426, average 000 00:00:01.106, maximum 000 00:00:01.107 by NS1PHUM3_HI.HIS;S.Test_DBmanagera( 9424) 10479;TRANS_OPEN_OnClick: 227

09:36:28.043 21.02  Operation DB_TRANS_CONTROL executions 2 total duration 000 00:00:02.301, average 000 00:00:01.150, maximum 000 00:00:01.197 by NS1PHUM3_HI.HIS;S.TestDbRefresh( 10105) 10429;StressTest_OnClick: 35

09:36:28.046 21.02  Operation DB_TRANSACT_ABORT executions 8 total duration 000 00:00:08.837, average 000 00:00:01.105, maximum 000 00:00:01.107 by 
09:36:28.049 21.02 ->Table DB.MAT_GROUP total time 000 00:00:04.420
09:36:28.052 21.02  Operation BROWSER_OPEN executions 1 total duration 000 00:00:01.107, average 000 00:00:01.107, maximum 000 00:00:01.107 by 
09:36:28.054 21.02  Operation DB_CONTROL executions 3 total duration 000 00:00:03.313, average 000 00:00:01.104, maximum 000 00:00:01.105 by NS1PHUM3_HI.HIS;S.Test_DBmanagera( 9424) 10479;DB_CONNECT_OnClick: 109

09:36:28.057 21.02 ->Table DB.MATERIAL total time 000 00:00:16.913
09:36:28.060 21.02  Operation BROWSER_OPEN executions 1 total duration 000 00:00:01.111, average 000 00:00:01.111, maximum 000 00:00:01.111 by 
09:36:28.063 21.02  Operation DB_CONTROL executions 12 total duration 000 00:00:13.276, average 000 00:00:01.106, maximum 000 00:00:01.129 by con 1:DBS_READ  
NS1PHUM3_HI.HIS;S.TestDbRefresh( 10105) 10429;StressTest_OnClick: 20

09:36:28.065 21.02  Operation DB_REFRESH_TABLE executions 2 total duration 000 00:00:02.526, average 000 00:00:01.263, maximum 000 00:00:01.266 by Triggered by commit of NS1PHUM3_HI.HIS;S.TestDbRefresh( 10105) 10429;StressTest_OnClick: 10

09:36:28.069 21.02 ===================================================================

Kotva
optimalizacia
optimalizacia
Optimalizácia a ladenie

...

Parametre databázy je možné nastavovať aj v procese D2000 CNF. Spojenie vytvorené akciou SQL_CONNECT obsahuje v konektovacom stringu nasledovné parametre:

...

  • 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í.

Kotva
sv._system_dbmdbperf
sv._system_dbmdbperf
SV._System_DBMDbPerf

...

Z hore uvedeného vyplýva, že v každom čase existujú pre každý objekt typu Databáza tri skupiny spojení (databázových pripojení a tým zároveň aj obslužných taskov), pričom ich množstvo v rámci skupiny je nejakým spôsobom obmedzené (alebo nie je podľa spôsobu nastavenia).

...