PostgreSQL Tips: Partisjonering av tabeller
Hvorfor partisjonere tabeller
Partisjonering kan gjøre søk raskere, fungere som en enkel form for lastbalansering, og lar deg for eksempel lagre de mest brukte dataene på raskere disker, bedre servere osv, mens eldre eller mindre brukte data lagres på mindre kostbare medier. Det er enkelt å sette opp, og PostgreSQL holder orden på partisjonene automatisk for oss.
Hvordan partisjonere tabeller
Å partisjonere en tabell i PostgreSQL betyr å dele en stor tabell inn i mindre, fysiske deler (partisjoner) basert på en nøkkel De tre vanlige typene er rekkevidde (range), liste (list) og hash.
Her er et enkelt eksempel hvor vi partisjonerer etter år (dvs range):
-- 1. Lag hovedtabellen
CREATE TABLE salg (
id int generated always as identity,
dato DATE NOT NULL,
salg INT )
PARTITION BY RANGE (dato);
-- 2. Lag partisjoner for egne tidsrom
CREATE TABLE salg_2025 PARTITION OF salg FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
CREATE TABLE salg_2026 PARTITION OF salg FOR VALUES FROM ('2026-01-01') TO ('2027-01-01');
\d salg
Partitioned table "partisjonering.salg2"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+------------------------------
id | integer | | not null | generated always as identity
dato | date | | not null |
salg | integer | | |
Partition key: RANGE (dato)
Publications:
"terjepub"
Number of partitions: 2 (Use \d+ to list them.)
Vi setter inn rader i hovedtabellen salg, og PostgreSQL putter automatisk data i en av de to partisjonene etter hvilket årstall dato-feltet har. Vi søker også i hovedtabellen salg og PostgreSQL søker bare i den patisjonen som inneholder data for det året vi søker etter.
Enkelt og greit