Tabellpartitionering

Databasdesign

Lis Sulmont

Curriculum Manager

Varför partitionera?

Tabeller växer (100-tals Gb / Tb)

Problem: frågor/uppdateringar blir långsammare

Orsak: t.ex. ryms inte index i minnet

Lösning: dela upp tabellen i mindre delar (= partitionering)

Bild av filarkiv sorterade efter datum

Databasdesign

Repetition: datamodellering

 

1. Konceptuell datamodell

2. Logisk datamodell

Vid partitionering är den logiska datamodellen densamma

3. Fysisk datamodell

Partitionering ingår i den fysiska datamodellen

Databasdesign

Vertikal partitionering

Vertikal partitionering

Dela upp tabellen även när den är fullt normaliserad

Databasdesign

Vertikal partitionering: ett exempel

Exempel på vertikal partitionering

T.ex. lagra long_description på ett långsammare medium

Databasdesign

Horisontell partitionering

Horisontell partitionering

Databasdesign

Horisontell partitionering: ett exempel

Horisontell partitionering: exempeltabell

Databasdesign

Horisontell partitionering: ett exempel

 

Horisontell partitionering: exempel

 

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');
Databasdesign

För- och nackdelar med horisontell partitionering

Fördelar

  • Index för flitigt använda partitioner ryms i minnet
  • Flytta till specifikt medium: långsammare vs. snabbare
  • Används för både OLAP och OLTP

Nackdelar

  • Partitionering av befintlig tabell kan vara krångligt
  • Vissa begränsningar går inte att sätta
Databasdesign

Relation till sharding

Sharding

Databasdesign

Nu kör vi en övning!

Databasdesign

Preparing Video For Download...