Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Optimering af Forespørgselsydelse | Avancerede BigQuery-Anvendelser og Optimering
BigQuery Grundlæggende

bookOptimering af Forespørgselsydelse

Stryg for at vise menuen

Forstå materialiserede visninger i BigQuery, en effektiv funktion til at optimere forespørgselsydelse og styre omkostninger. Materialiserede visninger gemmer forudberegnede forespørgselsresultater, hvilket gør dem ideelle til dashboards og rapporter, der køres ofte, men ikke kræver realtidsopdateringer.

Hvad er en materialiseret visning

En materialiseret visning gemmer resultatet af en forespørgsel som en fysisk tabel:

  • Den opdateres automatisk baseret på ændringer i de underliggende data;
  • Opdateringsintervaller kan konfigureres, f.eks. hver 60. minut;
  • Forespørgsler mod en materialiseret visning er hurtigere og billigere end forespørgsler mod basistabellen.

Hvorfor bruge materialiserede visninger

Materialiserede visninger giver flere centrale fordele:

  • Forbedret ydeevne ved at undgå gentagen beregning;
  • Lavere forespørgselsomkostninger ved at reducere mængden af scannede data;
  • Automatisk forespørgselsoptimering, hvor BigQuery automatisk kan bruge den materialiserede visning i stedet for basistabellen, når det er muligt.

Oprettelse af en materialiseret visning

Materialiserede visninger oprettes med CREATE MATERIALIZED VIEW og en standard SELECT-sætning. Opdateringsadfærd styres via konfigurationsmuligheder.

-- 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;

Begrænsninger, der skal være opmærksom på

Materialiserede visninger har vigtige begrænsninger:

  • Visse tilstandsafhængige funktioner (som CURRENT_TIMESTAMP) er ikke tilladt;
  • Understøttede joins og aggregeringer er begrænset til deterministiske mønstre;
  • Basistabellerne skal være i samme datasæt som den materialiserede visning.

Disse begrænsninger er vigtige at tage højde for under designet for at sikre, at visningen forbliver berettiget til automatisk opdatering.

Eksempel

Et dashboard, der sporer ugentlige salgsnøgletal, kan forespørge en materialiseret visning i stedet for den rå transaktionstabel. Dette forbedrer indlæsningstiderne markant, mens dataene forbliver rimeligt opdaterede.

Vigtig pointe

Materialiserede visninger er en effektiv metode til at skalere BigQuery-arbejdsbelastninger og styre omkostninger. De egner sig bedst til tilbagevendende forespørgsler, dashboards og rapporteringsscenarier, hvor næsten-realtidsopdateringer er tilstrækkelige.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 4. Kapitel 1
some-alt