Partiționarea tabelelor

Proiectarea bazelor de date

Lis Sulmont

Curriculum Manager

De ce partiționăm?

Tabelele cresc (sute de GB / TB)

Problemă: interogările/actualizările devin mai lente

Cauză: de ex., indicii nu încap în memorie

Soluție: divizarea tabelului în părți mai mici (= partiționare)

Imagine arhive de fișiere după dată

Proiectarea bazelor de date

Recapitulare: modelarea datelor

 

1. Model de date conceptual

2. Model de date logic

Pentru partiționare, modelul logic rămâne același

3. Model de date fizic

Partiționarea face parte din modelul fizic

Proiectarea bazelor de date

Partiționare verticală

Partiționare verticală

Divizarea tabelului chiar și când este complet normalizat

Proiectarea bazelor de date

Partiționare verticală: exemplu

Exemplu partiționare verticală

De ex., stocarea long_description pe un suport mai lent

Proiectarea bazelor de date

Partiționare orizontală

Partiționare orizontală

Proiectarea bazelor de date

Partiționare orizontală: exemplu

Partiționare orizontală: tabel exemplu

Proiectarea bazelor de date

Partiționare orizontală: exemplu

 

Partiționare orizontală: exemplu

 

CREATE TABLE sales (
    ...
    timestamp DATE NOT NULL
)
PARTITION BY RANGE (timestamp);

CREATE TABLE sales_2019_q1 PARTITION OF sales FOR VALUES FROM ('2019-01-01') TO ('2019-03-31'); ... CREATE TABLE sales_2019_q4 PARTITION OF sales FOR VALUES FROM ('2019-10-01') TO ('2020-01-31');
CREATE INDEX ON sales ('timestamp');
Proiectarea bazelor de date

Avantaje/dezavantaje ale partiționării orizontale

Avantaje

  • Indicii partițiilor frecvent utilizate încap în memorie
  • Mutare pe suport specific: mai lent vs. mai rapid
  • Utilizabil atât pentru OLAP, cât și pentru OLTP

Dezavantaje

  • Partiționarea unui tabel existent poate fi dificilă
  • Unele constrângeri nu pot fi definite
Proiectarea bazelor de date

Relația cu sharding-ul

Sharding

Proiectarea bazelor de date

Să exersăm!

Proiectarea bazelor de date

Preparing Video For Download...