DISKUSE
ECL 
03.04.2019 16:10

Agent přestal fungovat (1)
18.03.2019 08:28

Načíst krátký text z webu 
17.03.2019 23:32

Indexy mimo DB (1)
19.02.2019 15:46

planovaný agent v mail.box (1)
17.02.2019 15:11

Hint v Link 
17.12.2018 11:08

NoCache a ReCache (1)
17.12.2018 10:54

IBM se zbavilo Domina (1)
12.12.2018 10:26


ŠKOLENÍ


REKLAMA


KOMENTÁŘE

UNK table - po druhé.

Vytisknout článek

Z predchádzajúceho článku je už jasné, čo je UNK tabuľka v Domino databáze a ako sa dá zistiť jej veľkosť. Čo však v prípade, že sa nebezpečne blíži k limitu? Ako predísť problémom?


Zjednodušene sa na UNK tabuľku dá pozerať ako na zoznam všetkých polí, ktoré v databáze vznikli. Dokonca sa v nej zaznamenajú aj polia, ktoré vznikli dočasne pri kopírovaní polí. Ak teda vývojár skopíruje vo formulári pole Name do poľa Name_1 a následne ho premenuje na LastName, v tabuľke sa zaznamenajú všetky tri polia. Teraz je už jasnejšie, prečo v prípade rozsiahlejších aplikácií môže veľkosť tabuľky dramaticky vzrásť....

Vývojárovi sa UNK tabuľka zobrazuje v Domino Designer pod tlačítkom Fields, napríklad pri tvorbe @Formula sekvencií, návrhu pohľadov. UNK tabuľku však vidí aj používateľ, ak si napríklad tvorí vlastné pohľady alebo vytvára full-text podmienky. Ak teda zistíte, že UNK tabuľka je nadštandardne veľká, odporúčam nasledovné kroky:

/1/ Skrátiť názvy polí
Ak je to možné, skrátiť názvy polí vo formulároch a následne vo vytvorených dokumentoch (vhodným agentom).

/2/ Vymazať nepoužívané polia
Ak je to možné, vymazať nepoužívané polia z formulárov, pričom odporúčam použiť mazanie tlačítkom BackSpace, nie Delete, čo súvisí s nedokumentovaným trikom na UNK tabuľku. Samozrejme, nepoužívané polia je potrebné vymazať aj z dokumentov (agentom, využívajúcim @DeleteField).

/3/ Zjednotiť názvoslovie polí
Ak je to možné, použiť v jednotlivých formulároch rovnaké názvy polí. V prípade, že je definícia polí totožná, je vhodné použiť Shared Fields.

/4/ Kompaktovať databázu bez Full-text indexu
Pri kompaktovaní databázy dochádza k odstráneniu nepoužívaných polí z UNK tabuľky databázy. Ak má však databáza vytvorený FT index, tak k odstráneniu nepoužívaných polí nedôjde. Z tohto dôvodu je potrebné najskôr FT index vymazať a až následne skompaktovať databázu.

Po tomto procese je možné skontrolovať veľkosť UNK tabuľky (spôsobom popísaným v predchádzajúcom článku), alebo priamo jej zobrazením - napríklad pri tvorbe full-text podmienky. Ak k zmene veľkosti UNK tabuľky nedošlo, odporúčam:

/5/ Pridať a odstrániť nepotrebné pole
Na ľubovoľný formulár pridať pole s názvom "nepotrebného" poľa, kurzorom sa nastaviť za pole a použitím BackSpace pole vymazať. Dôležité je, že pri tomto postupe sa zobrazí potvrdzujúce dialógové okno "Do you want really delete field XXX?", čo je signál pre UNK tabuľku na "refresh".

/6/ Vytvoriť a zmazať FT index
Za istých okolností je nastavený interný príznak FTIndex na hodnotu True aj napriek tomu, že neexistuje FT index. Vytvorením FT indexu a jeho následným vymazaním dôjde k jeho prestaveniu na hodnotu Flase, čo umožní kompaktovaniu aktualizovať UNK tabuľku.

/7/ Skompaktovať databázu
Po tomto postupe by už malo dôjsť k zníženiu veľkosti UNK tabuľky. Len pre zaujímavosť: Limit 64 kB zodpovedá asi 3000-3200 poliam s priemernou dĺžkou 10-12 znakov. Vo väčšine aplikácií je tento problém skôr teoretický, no práve výnimky potvrdzujú pravidlo. O postupe a dôsledkoch zvýšenia UNK limitu už v nasledujúcej časti...


Autor: Miroslav Uhlár
Datum: 19.11.2002


Sdílet článek Seznam komentářů
 
Od
Téma
 Datum
VZ
Otázky
20.08.2004 11:16
Miro Uhlar
Odpovede..
20.08.2004 14:19
VZ
Díky ....
20.08.2004 16:53
Karel
Ako vždy, pozitívné a super
24.08.2004 20:30

Související články:
» 

UNK table - po tretie a naposledy...

 (Tipy a triky, 21.11.2002)

» 

UNK table - po prvé.

 (Tipy a triky, 14.11.2002)

» 

Lotus vsadil na Wiki

 (Odkazy, 13.01.2010)

» 

Programujeme servlety 2

 (Programování, 26.02.2004)

» 

Programujeme servlety 1

 (Programování, 25.11.2003)

» 

Počet webů na Dominu roste

 (Události, 16.10.2003)

» 

Kalendár českých a slovenských mien

 (Kalendář, 20.08.2003)