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