Dělení tabulek

Database Design

Lis Sulmont

Curriculum Manager

Proč dělit tabulky?

Tabulky rostou (stovky GB / TB)

Problém: dotazy a aktualizace se zpomalují

Příčina: např. indexy se nevejdou do paměti

Řešení: rozdělení tabulky na menší části (= dělení)

Archiv souborů podle data

Database Design

Opakování datového modelování

 

1. Konceptuální datový model

2. Logický datový model

Při dělení zůstává logický datový model stejný

3. Fyzický datový model

Dělení je součástí fyzického datového modelu

Database Design

Vertikální dělení

Vertikální dělení

Rozdělení tabulky i při plné normalizaci

Database Design

Vertikální dělení: příklad

Příklad vertikálního dělení

Např. uložení long_description na pomalejší médium

Database Design

Horizontální dělení

Horizontální dělení

Database Design

Horizontální dělení: příklad

Horizontální dělení: ukázková tabulka

Database Design

Horizontální dělení: příklad

 

Horizontální dělení: příklad

 

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');
Database Design

Výhody a nevýhody horizontálního dělení

Výhody

  • Indexy intenzivně používaných oddílů se vejdou do paměti
  • Přesun na konkrétní médium: pomalejší vs. rychlejší
  • Použitelné pro OLAP i OLTP

Nevýhody

  • Dělení existující tabulky může být komplikované
  • Některá omezení nelze nastavit
Database Design

Vztah ke shardingu

Sharding

Database Design

Pojďme si procvičit!

Database Design

Preparing Video For Download...