Tabellenpartitionierung

Datenbankdesign

Lis Sulmont

Curriculum Manager

Warum partitionieren?

Tabellen wachsen (100s Gb/Tb)

Problem: Abfragen/Aktualisierungen werden langsamer

Weil: z. B. Indizes nicht mehr in Speicher passen

Lösung: Tabelle aufteilen (= Partitionierung)

Image of file archives by date

Datenbankdesign

Auffrischung: Datenmodellierung

 

1. Konzeptionelles Datenmodell

2. Logisches Datenmodell

Für Partitionierung ist logisches Datenmodell dasselbe

3. Physisches Datenmodell

Partitionierung ist Teil des physischen Datenmodells

Datenbankdesign

Vertikale Paritionierung

Vertical partitioning

Aufteilung der Tabelle auch nach vollständiger Normalisierung

Datenbankdesign

Vertikale Paritionierung: ein Beispiel

Vertical partitioning example

Zum Beispiel: long_description auf einem langsameren Medium speichern

Datenbankdesign

Horizontale Partitionierung

Horizontal partitioning

Datenbankdesign

Horizontale Partitionierung: ein Beispiel

Horizontal partitioning: example table

Datenbankdesign

Horizontale Partitionierung: ein Beispiel

 

Horizontal partitioning: example

 

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

Vorteile/Nachteile der horizontalen Partitionierung

Vorteile

  • Indizes von oft genutzten Partitionen passen in Speicher
  • Verschieben in bestimmtes Medium: langsamer vs. schneller
  • Wird sowohl für OLAP als auch für OLTP verwendet

Nachteile:

  • Partitionieren einer bestehenden Tabelle ist aufwendig
  • Einige Constraints können nicht festgelegt werden
Datenbankdesign

Bezug zum Sharding

Sharding

Datenbankdesign

Lass uns üben!

Datenbankdesign

Preparing Video For Download...