Ytelse og spørringsoptimalisering i PostgreSQL · leksjon

Bruke materialiserte visninger for bedre ytelse

Utforsk hvordan materialiserte visninger kan forhåndsberegne komplekse spørringsresultater for å gjøre rapportering og analyse raskere.

Leksjon 3 av 410 trinn

Bruke materialiserte visninger for bedre ytelse er en gratis leksjon i Ytelse og spørringsoptimalisering i PostgreSQL på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ytelse og spørringsoptimalisering i PostgreSQL, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ytelse og spørringsoptimalisering i PostgreSQL inneholder totalt 4 leksjoner.

Hva er materialiserte visninger?

Velkommen til leksjonen om materialiserte visninger! Dette er kraftige verktøy i PostgreSQL for å gjøre komplekse spørringer raskere.

Tenk på en materialisert visning (MV) som et forhåndsberegnet resultatsett fra en spørring, lagret på disken. I motsetning til en vanlig visning, som kjører spørringen hver gang De åpner den, inneholder en MV de faktiske dataene.

Hvorfor bruke materialiserte visninger?

Materialiserte visninger er svært nyttige for ytelsen, særlig når De arbeider med:

  • Komplekse sammenføyninger: Spørringer som involverer mange tabeller.
  • Aggregasjoner: Beregninger som summer, gjennomsnitt eller antall over store datasett.
  • Rapportering og analyse: Dashbord og rapporter som ofte spør mot de samme komplekse dataene.

Ved å forhåndsberegne og lagre disse resultatene kan MV-er redusere kjøringstiden for gjentatte spørringer betydelig.

Opprette Deres første MV

De oppretter en materialisert visning ved hjelp av instruksjonen CREATE MATERIALIZED VIEW, etterfulgt av en SELECT-spørring. Spørringen definerer dataene som skal lagres i MV-en.

La oss opprette en enkel materialisert visning for å se gjennomsnittsprisen per kategori fra en products-tabell.

Praktisk oppretting av en MV

Prøv å kjøre dette eksempelet. Det oppretter en liten products-tabell, setter inn noen data og oppretter deretter en materialisert visning med navnet category_avg_price basert på disse dataene.

-- Setup table
CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    category VARCHAR(50),
    price DECIMAL(10, 2)
);

-- Insert data
INSERT INTO products (name, category, price) VALUES
('Laptop', 'Electronics', 1200.00),
('Mouse', 'Electronics', 25.00),
('Keyboard', 'Electronics', 75.00),
('Desk Chair', 'Furniture', 150.00),
('Lamp', 'Furniture', 40.00);

-- Create Materialized View
CREATE MATERIALIZED VIEW category_avg_price AS
SELECT category, AVG(price) AS average_price, COUNT(*) AS product_count
FROM products
GROUP BY category
ORDER BY category;

-- Select from MV
SELECT * FROM category_avg_price;

Holde dataene oppdatert

En viktig forskjell fra vanlige visninger er at materialiserte visninger ikke oppdateres automatisk når de underliggende dataene endres. De må oppdateres eksplisitt.

Bruk kommandoen REFRESH MATERIALIZED VIEW for å oppdatere dataene i en MV. For store MV-er kan De legge til CONCURRENTLY, slik at andre spørringer kan få tilgang til visningen mens den oppdateres.

Demonstrasjon av `REFRESH MATERIALIZED VIEW`

La oss legge til et nytt produkt i products-tabellen og deretter oppdatere den materialiserte visningen category_avg_price. Legg merke til at MV-en viser de gamle dataene frem til den oppdateres.

-- Add new data to the base table
INSERT INTO products (name, category, price) VALUES
('Monitor', 'Electronics', 300.00);

-- Check MV (will NOT show new data yet)
SELECT * FROM category_avg_price;

-- Refresh the Materialized View
REFRESH MATERIALIZED VIEW category_avg_price;

-- Check MV again (NOW shows new data)
SELECT * FROM category_avg_price;

MV-er sammenlignet med standardvisninger

Det er viktig å forstå de viktigste forskjellene mellom materialiserte visninger og standardvisninger:

  • Standardvisninger: Er i praksis lagrede spørringer. De lagrer ikke data selv, men kjører den definerende spørringen hver gang de åpnes.
  • Materialiserte visninger: Lagrer resultatet av den definerende spørringen som faktiske data på disken. Dette gjør lesing fra dem mye raskere, men de må oppdateres manuelt eller etter en tidsplan.

Velg MV-er når ytelsen er avgjørende for komplekse, forholdsvis statiske data.

Når bør De velge materialiserte visninger?

Materialiserte visninger egner seg godt til:

  • Batchrapportering: Generering av daglige, ukentlige eller månedlige rapporter som ikke trenger sanntidsdata.
  • Datavarehus: Forhåndsaggregering av data for raskere analytiske spørringer.
  • Eksterne dashbord: Rask tilgang til komplekse nøkkeltall for BI-verktøy.
  • Statiske data: Situasjoner der de underliggende tabellene ikke endres særlig ofte, slik at kostnadene ved oppdatering blir mindre.

Unngå MV-er for svært transaksjonsintensive sanntidsdata som trenger umiddelbare oppdateringer.

Kunnskapssjekk: MV-er

Vurder en materialisert visning med navnet daily_sales_summary som aggregerer salgsdata fra en transactions-tabell.

Hvis nye transaksjoner legges til i transactions-tabellen, hva må De gjøre for at daily_sales_summary skal gjenspeile disse nye salgene?

Materialiserte visninger: Oppsummering

I denne leksjonen har De lært om materialiserte visninger i PostgreSQL.

  • De er forhåndsberegnede spørringsresultater som lagres på disken, og gir betydelige ytelsesforbedringer for komplekse, gjentatte spørringer.
  • De opprettes med CREATE MATERIALIZED VIEW.
  • De må oppdateres eksplisitt ved hjelp av REFRESH MATERIALIZED VIEW for at dataene skal bli oppdatert.
  • De egner seg utmerket til rapportering, analyse og datavarehus der sanntidsoppdateringer ikke er avgjørende.

Fortsett å øve med MV-er for å mestre denne kraftige optimaliseringsteknikken!

Gratis å komme i gang

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
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Bruke materialiserte visninger for bedre ytelse» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Ytelse og spørringsoptimalisering i PostgreSQL, inkludert «Bruke materialiserte visninger for bedre ytelse», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Ytelse og spørringsoptimalisering i PostgreSQL inneholder totalt 4 leksjoner.

Hva lærer jeg i «Bruke materialiserte visninger for bedre ytelse»?

Utforsk hvordan materialiserte visninger kan forhåndsberegne komplekse spørringsresultater for å gjøre rapportering og analyse raskere. Du øver på Ytelse og spørringsoptimalisering i PostgreSQL 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 Ytelse og spørringsoptimalisering i PostgreSQL?

Ingen tidligere erfaring er nødvendig. Ytelse og spørringsoptimalisering i PostgreSQL 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 «Bruke materialiserte visninger for bedre ytelse»?

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 Ytelse og spørringsoptimalisering i PostgreSQL-leksjonen?

Ja. Alle Ytelse og spørringsoptimalisering i PostgreSQL-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. Optimalisere aggregater og vindusfunksjoner
  2. Rekursive CTE-er og grafspørringer
  3. Bruke materialiserte visninger for bedre ytelse
  4. Optimalisering av spørringer med FILTER og betinget aggregering
← Tilbake til Ytelse og spørringsoptimalisering i PostgreSQL