Avansert PostgreSQL: Indeksering, partisjonering og replikering · leksjon

Administrere partisjonerte tabeller

Lær beste praksis for å legge til, slette og endre partisjoner, samt håndtere standardpartisjoner.

Leksjon 3 av 412 trinn

Administrere partisjonerte tabeller er en gratis leksjon i Avansert PostgreSQL: Indeksering, partisjonering og replikering på CoddyKit. Dette er leksjon 3 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 Avansert PostgreSQL: Indeksering, partisjonering og replikering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Avansert PostgreSQL: Indeksering, partisjonering og replikering inneholder totalt 4 leksjoner.

Håndtering av partisjonerte tabeller

Etter hvert som databasen vokser, blir det avgjørende å håndtere partisjonerte tabeller. I denne leksjonen utforsker vi hvordan du dynamisk kan legge til, fjerne og endre partisjoner for å holde dataene organiserte og gi god ytelse.

Vi går gjennom hvordan du legger til nye partisjoner for fremtidige data, kobler fra gamle partisjoner for arkivering og kobler eksisterende tabeller til som nye partisjoner. Vi ser også på hvordan du håndterer data som ikke passer i noen av de definerte partisjonene.

Konfigurere en partisjonert tabell

Før vi håndterer partisjoner, skal vi opprette en grunnleggende partisjonert tabell. Vi bruker en enkel sales_data-tabell, partisjonert etter sale_date ved hjelp av en områdepartisjoneringsstrategi.

Denne tabellen fungerer som eksempelet vårt gjennom hele leksjonen.

CREATE TABLE sales_data (
  id SERIAL,
  sale_date DATE,
  amount DECIMAL(10, 2)
) PARTITION BY RANGE (sale_date);

-- Add an initial partition for December 2023
CREATE TABLE sales_2023_12 PARTITION OF sales_data
FOR VALUES FROM ('2023-12-01') TO ('2024-01-01');

INSERT INTO sales_data (sale_date, amount) VALUES ('2023-12-15', 150.75);
SELECT * FROM sales_data;

Legge til nye partisjoner

Etter hvert som tiden går, må du legge til nye partisjoner for innkommende data. Dette gjøres vanligvis med kommandoen CREATE TABLE ... PARTITION OF ..., på samme måte som da vi opprettet den første partisjonen.

Denne metoden oppretter en ny, tom underordnet tabell og kobler den til den overordnede partisjonerte tabellen for et angitt verdiområde.

Eksempel: Legge til en ny måned

La oss legge til en partisjon for januar 2024. Da blir alle nye salgsdata for januar automatisk sendt til sitt eget dedikerte lagringssegment.

Legg merke til hvordan vi definerer det bestemte datoområdet for den nye partisjonen.

-- Add a partition for January 2024
CREATE TABLE sales_2024_01 PARTITION OF sales_data
FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');

INSERT INTO sales_data (sale_date, amount) VALUES ('2024-01-20', 200.50);

-- Verify data is in the correct partition (optional check)
SELECT tableoid::regclass, * FROM sales_data WHERE sale_date = '2024-01-20';

Koble fra gamle partisjoner

Over tid kan eldre partisjoner inneholde historiske data som sjelden brukes, men som fortsatt må bevares. Frakobling av en partisjon gjør at du kan fjerne den fra strukturen til den partisjonerte tabellen uten å slette dataene.

Den frakoblede partisjonen blir en selvstendig, vanlig tabell som deretter kan arkiveres, flyttes eller slettes hvis den ikke lenger trengs.

Eksempel: Arkivere gamle data

La oss koble fra sales_2023_12-partisjonen. Etter frakoblingen finnes den som en separat tabell med navnet sales_2023_12, og er ikke lenger en del av den partisjonerte sales_data-tabellen.

Dette er nyttig for å redusere størrelsen på det aktive datasettet for spørringer.

-- Detach the December 2023 partition
ALTER TABLE sales_data DETACH PARTITION sales_2023_12;

-- The detached table still exists and contains its data
SELECT * FROM sales_2023_12;

-- Trying to query sales_data for Dec 2023 will now return nothing
SELECT * FROM sales_data WHERE sale_date = '2023-12-15';

Koble til eksisterende tabeller

Noen ganger kan du ha et stort datasett i en vanlig tabell som du vil integrere i en partisjonert tabell. I stedet for å sette inn alle dataene kan du koble til den eksisterende tabellen som en ny partisjon.

Tabellen som skal kobles til, må være tom eller bare inneholde data som oppfyller partisjonens begrensninger. Dette er en svært rask operasjon siden den ikke innebærer flytting av data.

Eksempel: Koble til en klargjort tabell

Tenk deg at vi har en frittstående tabell, sales_2024_02_temp, som inneholder salg fra februar 2024. Vi kan raskt koble den til den partisjonerte sales_data-tabellen.

Først oppretter og fyller vi den midlertidige tabellen, og deretter kobler vi den til.

-- Create a standalone table for February 2024 sales
CREATE TABLE sales_2024_02_temp (
  id SERIAL,
  sale_date DATE,
  amount DECIMAL(10, 2)
);
INSERT INTO sales_2024_02_temp (sale_date, amount) VALUES ('2024-02-10', 300.25);

-- Attach this table as a new partition
ALTER TABLE sales_data ATTACH PARTITION sales_2024_02_temp
FOR VALUES FROM ('2024-02-01') TO ('2024-03-01');

-- Now, sales_data can query the February data
SELECT * FROM sales_data WHERE sale_date = '2024-02-10';

Håndtere udefinerte data med DEFAULT

Hva skjer hvis det kommer inn data som ikke passer i noen av de definerte partisjonsområdene? Som standard vil dette føre til en feil. For å forhindre dette kan du opprette en DEFAULT-partisjon.

Standardpartisjonen fungerer som en oppsamlingspartisjon for alle rader som ikke samsvarer med kriteriene til de andre eksisterende partisjonene. Den er viktig for robusthet og for å forhindre datatap.

Eksempel: Opprette en standardpartisjon

La oss legge til en standardpartisjon i sales_data-tabellen. Deretter prøver vi å sette inn et salg fra en fremtidig dato (for eksempel 2025), som det ikke finnes noen eksplisitt partisjon for.

Disse dataene blir automatisk sendt til sales_default-partisjonen.

-- Create a default partition
CREATE TABLE sales_default PARTITION OF sales_data DEFAULT;

-- Insert data that doesn't fit existing ranges (e.g., 2025)
INSERT INTO sales_data (sale_date, amount) VALUES ('2025-01-05', 450.99);

-- Verify data went to the default partition
SELECT tableoid::regclass, * FROM sales_data WHERE sale_date = '2025-01-05';

Kontroll av partisjonshåndtering

Du har lært hvordan du dynamisk justerer strukturen til en partisjonert tabell.

Oppsummering: Partisjonshåndtering

I denne leksjonen har du fått god kontroll på viktige aspekter ved håndtering av partisjonerte tabeller:

  • Legge til nye partisjoner: Bruk CREATE TABLE ... PARTITION OF ... for å klargjøre for nye dataområder.
  • Koble fra partisjoner: Kommandoen ALTER TABLE ... DETACH PARTITION ... fjerner en partisjon fra mengden og gjør den om til en uavhengig tabell for arkivering eller separat håndtering.
  • Koble til partisjoner: Bruk ALTER TABLE ... ATTACH PARTITION ... for raskt å integrere en eksisterende vanlig tabell som en ny partisjon.
  • Standardpartisjoner: Opprett en DEFAULT-partisjon for å fange opp data som ikke samsvarer med andre definerte partisjonsgrenser, slik at dataintegriteten ivaretas.

Disse teknikkene gjør det mulig å vedlikeholde fleksible, effektive og skalerbare databasesystemer.

Gratis å komme i gang

Lær deg Avansert PostgreSQL: Indeksering, partisjonering og replikering 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
11
Leksjoner
44

Ofte stilte spørsmål

Er leksjonen «Administrere partisjonerte tabeller» gratis?

Ja – hele teksten i «Administrere partisjonerte tabeller» 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 Avansert PostgreSQL: Indeksering, partisjonering og replikering-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Avansert PostgreSQL: Indeksering, partisjonering og replikering inneholder totalt 4 leksjoner.

Hva lærer jeg i «Administrere partisjonerte tabeller»?

Lær beste praksis for å legge til, slette og endre partisjoner, samt håndtere standardpartisjoner. Du øver på Avansert PostgreSQL: Indeksering, partisjonering og replikering 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 Avansert PostgreSQL: Indeksering, partisjonering og replikering?

Ingen tidligere erfaring er nødvendig. Avansert PostgreSQL: Indeksering, partisjonering og replikering 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 3 av 4.

Hvor lang tid tar leksjonen «Administrere partisjonerte tabeller»?

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 Avansert PostgreSQL: Indeksering, partisjonering og replikering-leksjonen?

Ja. Alle Avansert PostgreSQL: Indeksering, partisjonering og replikering-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

  1. Hash-partisjonering for distribusjon
  2. Teknikker for underpartisjonering
  3. Administrere partisjonerte tabeller
  4. Intervallpartisjonering etter tid
← Tilbake til Avansert PostgreSQL: Indeksering, partisjonering og replikering