Segmentele, blocuri Oracle și extensii

Blocul de date (bloc de date) este cea mai mică unitate de stocare în baza de date. În mod ideal bloc de date Oracle trebuie să fie un multiplu al blocului sistemului de operare pentru a asigura eficiența în operațiunile de I / O.

Mărimea blocului implicit a datelor de bază de date este determinată de parametrul inițializarea DB_BLOCK_SIZE; Această dimensiune bloc este utilizat pentru tablespace SYSTEM, TEMP și SYSAUX la crearea bazei de date și nu pot fi schimbate fără a re-crearea bazei de date.
Fiecare bloc de date are un antet (header), care determină care datele sunt stocate în codurile de date sau bloc. În tabelele cu lista de indicatori (director tabel) conține informații referitoare la liniile din tabel, în acest bloc; pot fi conținute în rândul de bloc sau de intrări de index doar un singur tabel, cu excepția meselor grupate atunci când o listă de indicii identifică toate rândurile de masă care se încadrează în acest bloc. Listă de indicii în rânduri bloc de date (directorul rând) oferă detalii privind rânduri specifice într-un tabel sau elemente de index stocate în bloc.

spațiu pe disc pentru antet, lista indicatorul de masă și o listă de șiruri indicii este un procent foarte mic din spațiul alocat unității, astfel încât ne vom concentra spațiu pas liber (spațiu liber) și linii de date (date rând) în bloc.

Noul bloc de date nou alocat are un spațiu de înregistrare pentru noi și renovarea liniilor existente (preînregistrate); Updates poate crește și, micșora dimensiunea spațiului alocat pentru un rând, atunci când un rând are coloane lungime variabilă sau nu martor (non-NULL) a fost înlocuit cu gol (NULL), sau invers. Spațiu pentru noi inserturi vor fi disponibile în unitatea atâta timp cât acesta a depășit procentul de spațiu disponibil în blocul definit de parametrul PCTFREE, care este setat pentru a crea un segment. În cazul în care cantitatea de spațiu liber în blocul este mai mic decât PCTFREE. inserați nu mai este permisă în acest bloc. În cazul în care memoria liber listele de control spațiu sunt utilizate pentru segmentul blocurilor într-un tabel nou de inserție va fi permisă numai după cantitatea de spațiu liber în blocul scade sub PCTUSED.

Dacă dimensiunea liniei este mai mare decât mărimea blocului, sau dacă rândul actualizat nu se mai potrivește în unitatea originală (Vol. E. În blocul, unde a fost introdus înainte de actualizare.), Șirul poate ocupa mai mult de un bloc. In primul caz, prea mare pentru linia de bloc stocată în lanț (lanț) de blocuri; poate fi inevitabilă atunci când rândul conține coloane a căror dimensiune depășește cea mai mare din Oracle permisă dimensiunea blocului 10g (pentru Oracle 10g 32K).

În al doilea șir de caz se poate opri depozitată în blocul original, după actualizare, prin care Oracle va fi obligat să migreze de date (de transfer) pentru toate liniile din noul bloc și primul bloc pentru a lăsa un pointer pentru a indica locația celui de al doilea bloc, care acum este stocat date actualizate rând. Nu este greu de ghicit că un segment cu un număr mare de rânduri trimise pot apărea probleme de performanță ca numărul de blocuri, care vor fi accesate pentru a îndeplini cererea, poate crește în cazul în care nu aproape sa dublat. În unele cazuri, stabilirea valorii PCTFREE sau reorganizarea tabelei poate duce la o mai bună utilizare a spațiului pe disc și pentru a îmbunătăți performanța I / O.

Amploarea (măsura) este următoarea alocare de nivel logic în baza de date; este un anumit număr de blocuri alocate pentru un anumit tip de obiecte, cum ar fi o masă sau index. O măsură este un număr minim de blocuri alocate pentru o singură dată; când tot spațiul în măsura în care este umplut, o altă măsură este alocată.

La crearea unui tabel este alocat măsură pentru ea inițială (original). După tot spațiul în mărimea originală a cheltuit, vor fi alocate incrementale proporții (suplimentare). In LMTs aceste extensii ulterioare pot fi fie de aceeași mărime (tablespace dacă cuvântul cheie creând UNIFORMĂ au fost utilizate), sau Oracle selectează dimensiunea optimă (AUTOALLOCATE) pentru ea. În cazul în care dimensiunea măsura a fost aleasă ca un mod optim, Oracle va începe cu o minimă măsură, dimensiunea de 64 KB, și va crește treptat dimensiunea următoare măsura în care acestea sunt multipli de original. În cazul în care un astfel de spațiu tabelă scenariu, fragmentarea se reduce la zero.

În cazul în măsură dimensiunile sunt setate automat de Oracle, parametrii inițiali, NEXT, PCTINCRFASE și MINEXTENTS utilizate doar ca „orientare“, ținând cont de faptul că în conformitate cu algoritmi de interne Oracle identifică cele mai bune segmente de dimensiuni.

Grupurile de extensii alocate un segment. Segmentul trebuie să fie complet conținută într-un singur spațiu tabelă. Fiecare segment reprezintă unul și numai un singur tip de obiecte bază de date, cum ar fi o masă, o secțiune a unui tabel partiționat, index sau segment temporar. Pentru tabelele partiționate, fiecare partiție trebuie să fie stocate în propriul său segment; cu toate acestea, un grup format din două sau mai multe tabele pot fi depozitate în același segment. index partiționat este format dintr-un segment pentru fiecare partiție index.

tranșele de timp sunt alocate pentru o multitudine de scenarii. Când operația de sortare nu poate fi efectuată în memorie, ca de exemplu, apare în instrucțiunea select, în care este necesar pentru a sorta datele pentru a efectua operații distincte, grup de sau uniune, segment temporar este alocat pentru memorarea rezultatelor intermediare ale sortarea. Deoarece alocarea și Dealocarea intervalelor temporale apare în mod frecvent, ar fi foarte de dorit să se creeze un spațiu de tabelă special pentru stocarea intervalelor de timp. Acest lucru ajută la distribuirea cererilor este necesară PA I / O pentru această operațiune, precum și a reduce posibilitatea de fragmentare în celelalte spații de tabelă din cauza alocării constante și Dealocarea segmentelor temporare. Când creați o bază de date, puteți pentru fiecare utilizator nou care nu este atribuit în mod explicit spațiu specific tabelă temporară este utilizată pentru a crea un mod implicit, dar spațiul tabelă temporar; Dacă sistemul TABLESPACE făcut la nivel local de gestionat pentru sforăit intervalelor de timp ar trebui să fie creat un spațiu tabelă separat.

Metoda de gestionare a spațiului pe disc în cadrul segmentului depinde de modul în care a fost creat TABLESPACE, această unitate de control. Dacă spațiul tabelă este gestionat cu ajutorul unui dicționar, segment- folosește pentru a gestiona spațiu în unități de liste de memorie; în cazul în care spațiul de tabelă este controlat local, spatiu pe disc poate fi controlat prin freelists și utilizarea în segmente bitmap-uri. Oracle recomandă cu tărie crearea tuturor Tablespace noi gestionate la nivel local și de a gestiona spațiu liber efectuate automat în segmente, folosind bitmap-uri. Controlul automat al spațiului liber în segmente permite accesul concurent la un segment liste de biți, dar în comparație cu lista de memorie liberă; în plus față de tabele variază foarte mult în linii de dimensiune spațiu semnificativ mai eficient este utilizat în segmentele controlate automat.

Dacă segmentul este creat spațiu controlat automat în segmente, bitmap-uri sunt folosite pentru a controla acest spațiu. Ca urmare a unor cuvinte cheie pctused, grupuri freelist și freelist din operatorii creează masă și a crea indexul sunt ignorate. Structura pe trei niveluri bitmap în cadrul segmentului indică dacă blocurile HWM plasate sub plin (umplute peste PCTFREE), liber: la 0 la 25% de la 25 la 50%, între 50 la 75%, de la 75 la 100%, sau neformatat.

Reguli de postare

Nu puteți posta subiecte noi

Nu puteți posta răspunsuri

Nu puteți adăuga atașamente

Nu puteți modifica mesajele dumneavoastră

Ora este acum 12:42. Toate orele sunt GMT +3.