Waarom partitioneren: pruning en onderhoud
Begrijp de voordelen van partitionering: query-pruning, snellere VACUUM en eenvoudiger archiveren.
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?
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
- Waarom partitioneren: pruning en onderhoud
- Bereik-, lijst- en hashpartitionering
- Partities loskoppelen en koppelen
- Efficiënt query's uitvoeren over partities