La dénormalisation
Revenir volontairement sur la normalisation pour lire plus vite : colonne recopiée, compteur précalculé, vue matérialisée ; ce que chaque technique coûte en écriture et en cohérence, et comment on garde les copies à jour.
- 25 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Dénormalisation : de quoi s'agit-il ?
Voir la réponse
Choix délibéré d'ajouter de la redondance à un schéma normalisé pour accélérer certaines lectures.
Ce n'est pas un schéma mal conçu : c'est un schéma d'abord normalisé, puis dégradé là où une mesure a montré que la lecture coûtait trop.
Quelle commande PostgreSQL met à jour une vue matérialisée nommée ventes_mensuelles ?
REFRESH MATERIALIZED VIEW ventes_mensuelles;UPDATE MATERIALIZED VIEW ventes_mensuelles FROM ventes;REFRESH VIEW ventes_mensuelles CONCURRENTLY;ALTER MATERIALIZED VIEW ventes_mensuelles REFRESH;
Voir la réponse
REFRESH MATERIALIZED VIEW ventes_mensuelles;La syntaxe porte les trois mots
REFRESH MATERIALIZED VIEW. Il n'existe niUPDATEsur une vue matérialisée (on ne la modifie pas à la main) niREFRESH VIEW.Une … stocke le résultat de sa requête ; une vue ordinaire la réexécute à chaque lecture.
Voir la réponse
Une vue matérialisée stocke le résultat de sa requête ; une vue ordinaire la réexécute à chaque lecture.
Le gain vient de la lecture sans jointure ni agrégat ; le prix est un contenu qui reflète la dernière actualisation, pas l'état courant.
Donnée dérivée : de quoi s'agit-il ?
Voir la réponse
Valeur qu'on pourrait recalculer à partir d'autres données de la base, mais qu'on stocke pour ne pas la recalculer, comme un compteur ou une somme.
Elle est juste tant qu'on la met à jour à chaque changement de la source ; sinon elle diverge sans que la base le signale.
Une page d'accueil rejoue 2 000 fois par seconde une jointure sur cinq tables, dont les données changent une fois par jour. Quelle solution convient ?
- Supprimer les clés étrangères pour accélérer les lectures
- Une vue ordinaire (CREATE VIEW) sur la jointure, lue par la page
- Passer la base en lecture seule en journée
- Une vue matérialisée rafraîchie chaque nuit, lue par la page
Voir la réponse
Une vue matérialisée rafraîchie chaque nuit, lue par la page
Un résultat stable recalculé à chaque lecture : on le calcule une fois et on le relit. Une vue ordinaire ne stocke rien et rejoue la jointure à chaque lecture. Mais mesurer et indexer d'abord reste la première étape.