Insert ID
Jan Serak
sherry na pikebo.cz
Pátek Červen 20 15:24:57 CEST 2003
Kluvanek Martin wrote:
> Viete niekto ako vlastne uklada zaznamy?
Velmi zhruba.
> 1)cisla uklada v nejakom pevnom binarnom formate alebo ako ciselne
> stringy(takze cislo 1 zaberie ine miesto ako 10000000)?
Ani tak ani tak. Typ NUMBER uklada jako mantisu a dekadicky exponent,
ovsem v jakesi variante BCD.
VARCHAR2 je opatren delkou aktualni hodnoty (select length(retezec) from
...) tedy ve skutecnosti vubec fyzicky nesaha do retezcu. Je tam jedna
zrada s definici VARCHAR2(delka). Delka udava delku v bajtech, nikoli ve
znacich, takze pozor na kodovani UTF!
DATE ma nejake uplne silene kodovani, ktere jsem se ani nesnazil
pochopit. Rozhodne to je neco silenejsiho nez time_t (kvuli B.C. a A.D.
letopoctum).
> 2)pakuje nejak hodnoty? (samozrejme varcharxxxx asi ano)
Nikoli. Oracle od sveho prvopocatku ma strategii nikoli setrit diskovym
prostorem, nybrz mit maximalni pruchodnost. Takze nejenze nealokuje
misto pro jednotlive zaznamy, nybrz v alokacnich jednotkach zvanych
SEGMENTS, EXTENTS a BLOCKS.
Bloky jsou nejmensi jednotky a maji v ramci cele databaze konstantni
velikost (nektera z geometricke rady 4 KB, 8 KB, 16 KB, ...). Bloky
Oracle udrzuje bud na disku nebo v pameti podle svych potreb.
Extenty jsou skupiny bloku jdoucich fyzicky po sobe. Jejich velikost
urcuje Oracle podle presne danych pravidel. Kdyz nelze novy zaznam
ulozit do zadneho z jiz naalokovanych extentu, naalokuje se dalsi, byt
zabere 100 MB a ulozi se do nej 1 KB dat.
Segmenty jsou skupiny extentu, ktere jiz nemuseji byt fyzicky za sebou.
Segment udrzuje vsechna data ulozena v nejakem databazovem objektu
(tabulka ma vsechny sve zaznamy ulozena v jednom segmentu, index je
ulozen v jednom segmentu,...). Kazdemu segmentu lze nastavit parametry
pravidel pro alokaci a uvolnovani extentu (napr. o kolik procent ma byt
kazdy dalsi naalokovany extent vetsi nez predesly, jaky maximalni pocet
extentu ma pravo segment naalokovat, z kolika procent musi byt minimalne
vsechny extenty segmentu naplnene, aby se naalokoval dalsi extent, z
kolika procent musi byt extent prazdny, aby melo cenu uvazovat o tom,
jestli by neslo data presunout do jinych extentu a uvolneny extent
dealokovat, no je toho halda).
Proto pokud se chcete zaobirat otazkou, nakolik je Oracle rozezrany, tak
nezbude nez se zacist napr. do Oracle Concepts.
Jan Serak
Další informace o konferenci Databases