optimizare Oracle a tabelelor partiționate, Skahin Aleksey

1. Importanța specificând INIȚIALĂ DEPOZITARE - dimensiunea partiției implicită.

Începând cu Oracle 11, dimensiunea oricărei partiții furnizate pe disc, implicit este 8MB, chiar dacă nu are, în sine, niciun fel de date (până la 11 versiuni de dimensiunea implicită este de 65KB).
Prin urmare, importanța de a specifica STOCARE partitsionirovannoy INIȚIALĂ la crearea tabelului.

Prin urmare, nu este dificil să se calculeze dimensiunea minimă a unui tabel de 18 * 100 * = 140 GB 8MB.
Ceea ce este prea mult la dimensiunea inițială a tabelului fără secțiuni = 2GB.

Această dimensiune are mai multe dezavantaje:
  • Complexitatea transferului bazei de date (de export / import) - baza va cântări terabytes.
  • Limitările de dimensiuni TABLESPACE: Tabelul multe, DWH acest tabel trebuie să se suprapună de mai multe ori (tabelul sursă - o oglindă, converti tabele, tabelul de sinteză de fapt). Spatiul disponibil se va termina repede.
  • !Creșterea timpului de citire din partițiile de disc prin scanarea pentru partiție.

Soluția mea: reduce dimensiunea partiției.
Eu folosesc de obicei, această soluție:

Dimensiunea partiție poate fi luată cu o marjă mică (1MB)

Dimensiunea minimă a unui astfel de tabel va crește în comparație cu un plan ușor până la (1-0,68 / 1) * 100% = 32%

Observ un dezavantaj:
partiție foarte mici nu este în valoare de a face - este de a crește numărul de disc fizic accesează. pentru că scanarea secțiunii va avea nevoie de mai mult de un tratament, dar mai multe.

2. Setarea PCTFREE și opțiuni PCTUSED pentru a reduce dimensiunea mesei
dimensiunea mesei poate fi redus în mod semnificativ, dacă setați acești parametri:
PCTFREE - unitate% sub rezerva modificărilor. Dacă tabelul este rareori actualizat (sau doar curățate și re-umplut), atunci acest parametru poate fi setat aproape de 0.
PCTUSED - bloc% pentru date, în cazul în care dimensiunea datelor depășește% în bloc, noile date nu vor fi inserate. Dacă din nou, datele sunt rareori actualizate, apoi comprimarea maximă, acest parametru poate fi setat mai aproape de 100%.


3. Rapid tabele de actualizare prin EXCANGE PARTITION.

O problemă comună în DWH - actualizare de date elementare. Să presupunem că trebuie să completați în noile date în ultima lună.
Modul tradițional de a insera / * + ADAUGARE * / este destul de lent.
Există o alternativă, care rulează o fracțiune de secundă.

Acest lucru necesită un tabel auxiliar, care va fi pus la următoarea porțiune de actualizare.
În tabelele trebuie să se potrivească cu structura complet, inclusiv dimensiunile și secvența de coloane.
Apoi, puteți arunca acest tabel la țintă partitsionirovannuyu o echipă.

EXEMPLU perekidki din tabelul intermediar partitsionirovannuyu tabel GAMA-INTERVAL.

Aceste date de comandă sunt schimbate între tabele: partiție este plin tabel de date T_TBL_PT și tabel de date gol partiție T_TBL.

În mod similar, puteți face schimburi cu subpartitsiyami


4. Aflați numele partiției printr-un filtru de arbitrar
Acest lucru ar putea fi util, de exemplu, pentru a aduna statistici doar pe secțiunea dorită, după cum în dbms_stat trebuie să specificați numele fizic.
Dacă știți valoarea în secțiunile de coloană, este necesar să se profite de proiectare: