Firebird - vyvazovani indexu

Jan Serak sherry na pikebo.cz
Pondělí Červenec 11 17:23:23 CEST 2005


Novák Jiří wrote:
> Zdravicko!
> 
> Ctu si tu knihu interbase / firebird a narazil jsem na neco cemu se mi 
> nechce moc verit.
> 
> Pise se tu ze index je tvoren binarnim stromem, (to mne neudivuje)
> a ze k vyvazeni indexu dojde pouze pri deaktivaci a opetovne aktivaci 
> indexu nebo nejake jeho zmene prikazem alter index , create index  nebo 
> drop index
> (cos us mne udivuje)
> 
> To, ze do nejake indexovane polozky vkladam postupne se zvysujici 
> hodnotu je predci velice casty jev
> (cisla faktur, pokladni doklady , casove udaje, GEN_ID() atd )
> znamena to ze bez manualniho preindexovani pujde o sekvencni vyhledavani 
> v hodnotach indexu?
> (zadne puleni intervalu ?)

Ale vubec ne. Index a tabulka jsou dva naprosto nezavisle objekty. Pokud 
je to pro databazovy stroj vyhodne, tak prochazi index (existuje-li), 
aby nemusel sekvencne cist celou tabulku. Po vytvoreni je index idealne 
vyvazeny (vsechny jeho vetve jsou stejne dlouhe), takze lze rici, ze 
libovolny zaznam lze najit se stejnym poctem nactenych bloku indexu.

V prubehu zmen tabulek vsak dochazi k tomu, ze nektere vetve rostou 
rychleji nez jine (nebo se dokonce zkracuji). Tomu se proste nevyhnete, 
protoze neni unosne pri kazdem DML prikazu znovu vyvazovat index - to by 
tak obludnym zpusobem zvysilo rezii databazoveho stroje, ze by jej nikdo 
nechtel ;-)

Takze DML prikazy jsou implementovany tak, aby se index menil jen v tom 
nejmensim moznem poctu bloku (rozpad bloku do dvou, slouceni dvou bloku 
do jednoho), coz nutne vede k degeneraci B-stromu.

Ukolem administratora pak je udrzovat indexy v rozumnem tvaru.
> 
> Opravdu tu neni nejaky jiny (vnitrni) mechanizmus optimalizace indexu ?
> ( tezko za provozu deaktivovat index hlidajici datovou integritu ... )

Nevim jak Firebird, ale Oracle ma prikaz ALTER INDEX ... REBUILD. 
Funguje tak, ze konstruuje novy B-strom v novem segmentu, cimz ostatni 
sessiony nejsou nijak ruseny. Jakmile je novy segment vyroben, puvodni 
se zrusi (prislusna tabulka je po celou dobu exkluzivne uzamcena, takze 
nehrozi nekonzistence mezi obsahem tabulky a nove budovaneho indexu).

Jan Serak



Další informace o konferenci Test