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 Test