Partizionamento delle tabelle

Progettazione di database

Lis Sulmont

Curriculum Manager

Perché fare delle partizioni?

Le tabelle crescono (centinaia di GB / TB)

Problema: le query/gli aggiornamenti diventano più lenti

Perché: ad esempio, gli indici non entrano nella memoria.

Soluzione: dividi la tabella in parti più piccole (= partizionamento)

Immagine degli archivi di file per data

Progettazione di database

Ripasso sulla modellazione dei dati

 

1. Modello concettuale dei dati

2. Modello logico dei dati

Per il partizionamento, il modello logico dei dati è lo stesso.

3. Modello fisico dei dati

Il partizionamento fa parte del modello fisico dei dati.

Progettazione di database

Divisione verticale

Divisione verticale

Dividi tabella anche se completamente normalizzata

Progettazione di database

Divisione verticale: un esempio

Esempio di divisione verticale

Per esempio, salva long_description su un supporto più lento.

Progettazione di database

Divisione orizzontale

Divisione orizzontale

Progettazione di database

Divisione orizzontale: un esempio

Partizionamento orizzontale: tabella di esempio

Progettazione di database

Divisione orizzontale: un esempio

 

Divisione orizzontale: esempio

 

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');
Progettazione di database

Pro e contro della partizione orizzontale

Pro

  • Gli indici delle partizioni usate di più stanno nella memoria
  • Passa a un mezzo specifico: più lento vs più veloce
  • Si usa sia per OLAP che per OLTP.

Contro

  • Dividere una tabella che già esiste può essere un po' una seccatura.
  • Alcune restrizioni non possono essere impostate.
Progettazione di database

Relazione con lo sharding

Sharding

Progettazione di database

Passiamo alla pratica!

Progettazione di database

Preparing Video For Download...