Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Optimalisering av Spørringsytelse | Avanserte BigQuery-applikasjoner og Optimalisering
BigQuery-Grunnleggende

bookOptimalisering av Spørringsytelse

Sveip for å vise menyen

Forstå materialiserte visninger i BigQuery, en kraftig funksjon for å optimalisere spørringsytelse og kontrollere kostnader. Materialiserte visninger lagrer forhåndsberegnede spørringsresultater, noe som gjør dem ideelle for dashbord og rapporter som kjøres ofte, men som ikke krever sanntidsoppdateringer.

Hva er en materialisert visning

En materialisert visning lagrer resultatet av en spørring som en fysisk tabell:

  • Den oppdateres automatisk basert på endringer i underliggende data;
  • Oppdateringsintervaller kan konfigureres, for eksempel hver 60. minutt;
  • Spørringer mot en materialisert visning er raskere og billigere enn å spørre grunnlagetabellen.

Hvorfor bruke materialiserte visninger

Materialiserte visninger gir flere viktige fordeler:

  • Bedre ytelse ved å unngå gjentatt beregning;
  • Lavere spørringskostnader ved å redusere mengden skannet data;
  • Automatisk spørringsoptimalisering, der BigQuery kan bruke materialiserte visninger i stedet for grunnlagetabellen når det er mulig.

Opprette en materialisert visning

Materialiserte visninger opprettes med CREATE MATERIALIZED VIEW og en standard SELECT-setning. Oppdateringsatferd styres gjennom konfigurasjonsalternativer.

-- 1. Create a materialized view for sales analysis by user loyalty status
CREATE MATERIALIZED VIEW `codefinity-442016.codeFinity_test.mv_sales_by_loyalty` 
OPTIONS(
  enable_refresh = true,
  refresh_interval_minutes = 60
) AS
SELECT 
  up.loyalty_status,
  COUNT(DISTINCT ps.user_id) AS user_count,
  COUNT(ps.sale_id) AS transaction_count,
  SUM(ps.quantity) AS total_items_sold,
  SUM(ps.quantity * ps.sale_price) AS total_revenue,
  AVG(ps.sale_price) AS avg_price_per_unit,
  MAX(PARSE_DATE('%Y-%m-%d', ps.sale_date)) AS last_sale_date
FROM 
  `codefinity-442016.codeFinity_test.product_sales_section4` ps
JOIN 
  `codefinity-442016.codeFinity_test.user_profile` up
  ON ps.user_id = up.user_id
GROUP BY 
  up.loyalty_status;

-- 2. Query the materialized view for much faster results
SELECT 
  loyalty_status,
  user_count,
  transaction_count,
  total_revenue,
  total_revenue / transaction_count AS avg_transaction_value,
  total_revenue / user_count AS revenue_per_user
FROM 
  `codefinity-442016.codeFinity_test.mv_sales_by_loyalty`
ORDER BY 
  total_revenue DESC;

Begrensninger du bør være oppmerksom på

Materialiserte visninger har viktige begrensninger:

  • Enkelte tilstandsbaserte funksjoner (som CURRENT_TIMESTAMP) er ikke tillatt;
  • Støttede join- og aggregeringsmønstre er begrenset til deterministiske mønstre;
  • Grunnlagetabellene må være i samme datasett som den materialiserte visningen.

Disse begrensningene er viktige å ta hensyn til under utforming for å sikre at visningen forblir kvalifisert for automatisk oppdatering.

Eksempel

Et dashbord som sporer ukentlige salgsmetrikker kan spørre en materialisert visning i stedet for den rå transaksjonstabellen. Dette forbedrer lastetiden betydelig, samtidig som dataene holdes tilstrekkelig oppdaterte.

Viktig å huske

Materialiserte visninger er en effektiv måte å skalere BigQuery-arbeidsbelastninger og håndtere kostnader på. De egner seg best for gjentakende spørringer, dashbord og rapporteringsscenarier der nesten sanntidsoppdateringer er tilstrekkelig.

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 4. Kapittel 1
some-alt