Cache et Matérialisation

Exploitez le cache automatique et les tables matérialisées pour réduire drastiquement vos coûts de requêtes répétitives.

Cache automatique (24h)

BigQuery met automatiquement en cache les résultats des requêtes pendant 24h. Les cache hits sont gratuits.

Succes

Cache hit = 0 bytes facturés = $0

-- Première exécution : 500 GB scannés = $2.50
SELECT country, COUNT(*) as users
FROM `project.dataset.users`
GROUP BY country;

-- Deuxième exécution (même requête) : cache hit = $0
SELECT country, COUNT(*) as users
FROM `project.dataset.users`
GROUP BY country;

Conditions du cache

Le cache est utilisé uniquement si :

ConditionCache utilisé ?
Même requête (caractère pour caractère)Oui
Tables non modifiées depuis la dernière exécutionOui
Fonctions non-déterministes (CURRENT_TIMESTAMP, RAND)Non
Streaming buffer actifNon
Destination table spécifiéeNon
-- Pas de cache : fonction non-déterministe
SELECT * FROM events WHERE created_at > CURRENT_TIMESTAMP();

-- Cache possible : valeur fixe
SELECT * FROM events WHERE created_at > '2025-01-15';

Erreur frequente

Utiliser CURRENT_DATE() ou CURRENT_TIMESTAMP() dans des requetes de dashboard. Remplacez par une date fixe calculee cote application pour beneficier du cache. Economie potentielle : 100% sur les requetes repetees.

Tables matérialisées

Les materialized views pré-calculent et stockent les résultats. BigQuery les maintient automatiquement à jour.

-- Création d'une vue matérialisée
CREATE MATERIALIZED VIEW `project.dataset.daily_stats`
OPTIONS (
  enable_refresh = TRUE,
  refresh_interval_minutes = 60  -- Rafraîchissement toutes les heures
)
AS
SELECT
  DATE(event_timestamp) as event_date,
  country,
  event_type,
  COUNT(*) as event_count,
  COUNT(DISTINCT user_id) as unique_users
FROM `project.dataset.events`
GROUP BY 1, 2, 3;

Avantages des materialized views

  • Requêtes instantanées sur des agrégations pré-calculées
  • Smart tuning : BigQuery réécrit automatiquement les requêtes pour utiliser la MV
  • Maintenance automatique : rafraîchissement incrémental
  • Coût de stockage mais économie massive sur le compute

A retenir

Une materialized view sur une table de 10 TB agrege peut ne faire que quelques GB. Vous payez $0.02/GB/mois de storage mais economisez potentiellement des centaines de dollars en compute par jour.

Quand matérialiser ?

SituationRecommandation
Agrégations fréquentes sur grosses tablesMatérialiser
Dashboards avec mêmes métriquesMatérialiser
Requêtes ad-hoc variéesPas de MV
Données très volatilesAttention au coût de refresh

Decision concrete

Identifiez vos 5 requetes les plus executees (via INFORMATION_SCHEMA.JOBS). Si elles font des agregations sur les memes tables, creez une materialized view. ROI souvent atteint en quelques jours.
Jonathan Kini

Jonathan Kini

J'aide les équipes data à réduire et maîtriser leurs coûts BigQuery et Snowflake, sans sacrifier la performance. 8 ans de terrain, de la startup aux environnements data à grande échelle.