Tabellenpartitionierung

Datenbankdesign

Lis Sulmont

Curriculum Manager

Warum partitionieren?

Tabellen werden immer größer (100s Gb / Tb)

Problem: Abfragen/Aktualisierungen werden langsamer

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

Lösung: Die Tabelle in kleinere Teile aufteilen (= Partitionierung)

Bild von Dateiarchiven nach Datum

Datenbankdesign

Auffrischung zum Thema Datenmodellierung

 

1. Konzeptionelles Datenmodell

2. Logisches Datenmodell

Für die Partitionierung ist das logische Datenmodell dasselbe.

3. Physikalisches Datenmodell

Partitionierung ist Teil des physischen Datenmodells

Datenbankdesign

Vertikale Unterteilung

Vertikale Trennwand

Tabelle auch bei vollständiger Normalisierung teilen

Datenbankdesign

Vertikale Unterteilung: ein Beispiel

Beispiel für vertikale Partitionierung

Zum Beispiel: Speichere long_description auf einem langsameren Medium.

Datenbankdesign

Horizontale Unterteilung

Horizontale Unterteilung

Datenbankdesign

Horizontale Partitionierung: ein Beispiel

Horizontale Partitionierung: Beispiel Tabelle

Datenbankdesign

Horizontale Partitionierung: ein Beispiel

 

Horizontale Unterteilung: Beispiel

 

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 den Speicher
  • Wechsel zu einem bestimmten Medium: langsamer vs. schneller
  • Wird sowohl für OLAP als auch für OLTP verwendet

Nachteile:

  • Das Partitionieren einer bestehenden Tabelle kann echt nervig sein.
  • Einige Einschränkungen können nicht festgelegt werden.
Datenbankdesign

Bezug zum Sharding

Sharding

Datenbankdesign

Lass uns üben!

Datenbankdesign

Preparing Video For Download...