Partycjonowanie tabel

Projektowanie baz danych

Lis Sulmont

Curriculum Manager

Dlaczego partycjonować?

Tabele rosną (setki GB / TB)

Problem: zapytania i aktualizacje stają się wolniejsze

Przyczyna: np. indeksy nie mieszczą się w pamięci

Rozwiązanie: podział tabeli na mniejsze części (= partycjonowanie)

Archiwum plików według daty

Projektowanie baz danych

Przypomnienie modelowania danych

 

1. Konceptualny model danych

2. Logiczny model danych

W przypadku partycjonowania logiczny model danych pozostaje taki sam

3. Fizyczny model danych

Partycjonowanie jest częścią fizycznego modelu danych

Projektowanie baz danych

Partycjonowanie pionowe

Partycjonowanie pionowe

Podział tabeli nawet po pełnej normalizacji

Projektowanie baz danych

Partycjonowanie pionowe: przykład

Przykład partycjonowania pionowego

Np. przechowywanie long_description na wolniejszym medium

Projektowanie baz danych

Partycjonowanie poziome

Partycjonowanie poziome

Projektowanie baz danych

Partycjonowanie poziome: przykład

Partycjonowanie poziome: przykładowa tabela

Projektowanie baz danych

Partycjonowanie poziome: przykład

 

Partycjonowanie poziome: przykład

 

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');
Projektowanie baz danych

Zalety i wady partycjonowania poziomego

Zalety

  • Indeksy intensywnie używanych partycji mieszczą się w pamięci
  • Przeniesienie na określone medium: wolniejsze lub szybsze
  • Przydatne zarówno dla OLAP, jak i OLTP

Wady

  • Partycjonowanie istniejącej tabeli może być kłopotliwe
  • Niektórych ograniczeń nie można ustawić
Projektowanie baz danych

Związek z shardingiem

Sharding

Projektowanie baz danych

Czas na ćwiczenia!

Projektowanie baz danych

Preparing Video For Download...