Hvorfor partisjonere: Beskjæring og vedlikehold
Forstå fordelene ved partisjonering: beskjæring av spørringer, raskere VACUUM og enklere arkivering.
Hvorfor partisjonere: Beskjæring og vedlikehold er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva er partisjonering?
Å dele én logisk tabell opp i mange fysiske tabeller (partisjoner), der hver inneholder et delsett av radene. Spørringer skanner bare relevante partisjoner.
Hvorfor partisjonere?
Store tabeller byr på problemer:
- Indekser blir enorme, og oppslag går saktere
- VACUUM tar flere timer
- Sikkerhetskopieringer går sakte
- Noen spørringer skanner unødvendig mye
Partisjonering løser alle fire problemene.
Utelatelse av partisjoner
Planleggeren kan HOPPE OVER partisjoner som ikke kan samsvare med en WHERE-betingelse:
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.Når bør De partisjonere?
Partisjoner når:
- Tabellen er på over 100 GB
- De har en naturlig partisjonsnøkkel (dato, leietaker, region)
- De fleste spørringene filtrerer på denne nøkkelen
- Gamle data kan arkiveres eller slettes
Når De IKKE bør partisjonere
Ikke partisjoner bare fordi det høres kult ut:
- Tabeller på under noen få GB får ingen særlig fordel
- Hvis spørringene ikke filtrerer på partisjonsnøkkelen, får De ingen partisjonsbeskjæring
- Det tilfører operasjonell kompleksitet (partisjonene må administreres)
Partisjoneringsstrategier
PostgreSQL støtter tre:
- Range — partisjoner dekker verdiintervaller (datoer, ID-er)
- List — partisjoner inneholder bestemte verdier (land, leietakere)
- Hash — modulbasert hashing for jevn fordeling
Rask sletting av partisjoner
Det går øyeblikkelig å slette en partisjon – ingen sletting rad for rad:
DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.Enklere vedlikehold
VACUUM, REINDEX og ANALYZE opererer per partisjon. Vedlikeholdsvinduer kan fordeles mellom partisjonene i stedet for å kreve én enorm jobb.
Mindre indekser per partisjon
Hver partisjon har egne indekser. Et B-tree på en partisjon på 1 GB har færre nivåer enn på 1 TB – oppslagene går raskere.
Partisjonering er et verktøy, ikke en mirakelkur
De får ikke ytelse gratis – De får partisjonsbeskjæring for spørringer som filtrerer på partisjonsnøkkelen, samt enklere vedlikehold. Hvis dette ikke gjelder, tilfører De bare kompleksitet.
PostgreSQLs innebygde (deklarative) partisjonering
Tilgjengelig siden PG 10. Hver partisjon er en ekte tabell:
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');Før PG10: Partisjonering med arv
Eldre systemer bruker tabellarv + utløsere. Unngå dette i ny kode – deklarativ partisjonering er enklere og raskere.
Oppsummering
Partisjonering er særlig nyttig for store tabeller delt inn etter tidsintervaller eller leietakere.
- Partisjonsbeskjæring hopper over irrelevante partisjoner
- Vedlikehold per partisjon går raskere
- DROP TABLE erstatter DELETE på 100 GB
- Det er ingen mirakelkur – hjelper bare når spørringene samsvarer med partisjonsnøkkelen
Kort sjekk
De partisjonerer en tabell etter måned og kjører SELECT * FROM events WHERE country = 'US' uten datofilter. Hjelper partisjonering?
Lær deg SQL med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 46
- Leksjoner
- 183
Ofte stilte spørsmål
Er leksjonen «Hvorfor partisjonere: Beskjæring og vedlikehold» gratis?
Ja – hele teksten i «Hvorfor partisjonere: Beskjæring og vedlikehold» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Hvorfor partisjonere: Beskjæring og vedlikehold»?
Forstå fordelene ved partisjonering: beskjæring av spørringer, raskere VACUUM og enklere arkivering. Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med SQL Academy?
Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Hvorfor partisjonere: Beskjæring og vedlikehold»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?
Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Hvorfor partisjonere: Beskjæring og vedlikehold
- Område-, liste- og hash-partisjonering
- Koble fra og koble til partisjoner
- Effektiv spørring på tvers av partisjoner