SQL Academy · Les

Waarom partitioneren: pruning en onderhoud

Begrijp de voordelen van partitionering: query-pruning, snellere VACUUM en eenvoudiger archiveren.

Les 1 van 414 stappen

Waarom partitioneren: pruning en onderhoud is een gratis SQL Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject SQL Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus SQL Academy bevat in totaal 4 lessen.

Wat is partitionering?

Eén logische tabel opsplitsen in meerdere fysieke tabellen (partities), die elk een subset van de rijen bevatten. Query's scannen alleen relevante partities.

Waarom zou je dat doen?

Grote tabellen veroorzaken problemen:

  • Indexen worden enorm en opzoekacties worden trager
  • VACUUM duurt uren
  • Back-ups zijn traag
  • Sommige query's scannen onnodig

Partitionering lost alle vier de problemen op.

Partitie-eliminatie

De planner kan partities OVERSLAAN die niet aan een WHERE-clausule kunnen voldoen:

EXPLAIN SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Only March partition scanned; older partitions skipped.
-- Plan rows: 1M, not 100B.

Wanneer partitioneren

Partitioneer wanneer:

  • De tabel groter is dan ongeveer 100 GB
  • Je een natuurlijke partitiesleutel hebt (datum, tenant, regio)
  • De meeste query's op die sleutel filteren
  • Oude gegevens kunnen worden gearchiveerd of verwijderd

Wanneer je niet moet partitioneren

Partitioneer niet alleen omdat het interessant klinkt:

  • Tabellen van minder dan enkele GB hebben er geen voordeel van
  • Als query's niet op de partitiesleutel filteren, vindt er GEEN partitie-eliminatie plaats
  • Het voegt operationele complexiteit toe (partities beheren)

Partitioneringsstrategieën

PostgreSQL ondersteunt er drie:

  • Range — partities omvatten waardebereiken (datums, id's)
  • List — partities bevatten specifieke waarden (landen, tenants)
  • Hash — hashing op basis van modulo voor een gelijkmatige verdeling

Goedkoop verwijderen

Een partitie verwijderen gaat direct — zonder rijen één voor één te verwijderen:

DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.

Eenvoudiger onderhoud

VACUUM, REINDEX en ANALYZE werken per partitie. Onderhoudsvensters passen tussen partities, in plaats van dat je één enorme batch nodig hebt.

Kleinere indexen per partitie

Elke partitie heeft eigen indexen. Een B-tree op een partitie van 1 GB heeft minder niveaus dan een B-tree op 1 TB — opzoekacties zijn sneller.

Partitionering is een hulpmiddel, geen wondermiddel

Je krijgt geen gratis prestatieverbetering — je krijgt partitie-eliminatie voor query's die op de partitiesleutel filteren en eenvoudiger onderhoud. Als dat niet van toepassing is, voeg je alleen complexiteit toe.

In PostgreSQL ingebouwde (declaratieve) partitionering

Beschikbaar sinds PG 10. Elke partitie is een echte tabel:

CREATE TABLE events (
  id BIGSERIAL,
  ts TIMESTAMPTZ NOT NULL,
  user_id BIGINT,
  data JSONB
) PARTITION BY RANGE (ts);

CREATE TABLE events_2024_01 PARTITION OF events
  FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');

Vóór PG10: partitionering via overerving

Oudere systemen gebruiken tabelovererving en triggers. Vermijd dit in nieuwe code — declaratieve partitionering is eenvoudiger en sneller.

Samenvatting

Partitionering is bijzonder nuttig voor grote tabellen die op tijdsperioden of tenants zijn ingedeeld.

  • Partitie-eliminatie slaat irrelevante partities over
  • Onderhoud per partitie is sneller
  • DROP TABLE vervangt een DELETE van 100 GB
  • Geen wondermiddel — het helpt alleen als query's bij de partitiesleutel passen

Snelle controle

Je partitioneert een tabel per maand en voert SELECT * FROM events WHERE country = 'US' uit zonder datumfilter. Helpt partitionering hierbij?

Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
46
Lessen
183

Veelgestelde vragen

Is de les “Waarom partitioneren: pruning en onderhoud” gratis?

Ja — de volledige tekst van “Waarom partitioneren: pruning en onderhoud” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus SQL Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus SQL Academy bevat in totaal 4 lessen.

Wat leer ik in “Waarom partitioneren: pruning en onderhoud”?

Begrijp de voordelen van partitionering: query-pruning, snellere VACUUM en eenvoudiger archiveren. Je oefent met SQL Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met SQL Academy te beginnen?

Ervaring vooraf is niet nodig. SQL Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Waarom partitioneren: pruning en onderhoud”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over SQL Academy?

Ja. Elke les over SQL Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Waarom partitioneren: pruning en onderhoud
  2. Bereik-, lijst- en hashpartitionering
  3. Partities loskoppelen en koppelen
  4. Efficiënt query's uitvoeren over partities
← Terug naar SQL Academy