Index et performance
AvancéB-tree, index composites et partiels, autres types d'index, EXPLAIN ANALYZE, statistiques et requêtes lentes classiques.
- 01
Comment fonctionne un index B-tree
Un index est une structure triée, séparée de la table, qui permet de retrouver des lignes sans parcourir toute la table : c'est le principal levier de performance en lecture.
- 02
Créer les bons index
L'efficacité d'un index dépend de son ordre de colonnes, de sa sélectivité et de la façon dont la requête l'utilise.
- 03
Au-delà du B-tree : GIN, GiST, BRIN, hash
PostgreSQL propose plusieurs types d'index pour des données et des opérateurs différents.
- 04
Lire un plan avec EXPLAIN et EXPLAIN ANALYZE
EXPLAIN montre le plan que le planificateur prévoit ; EXPLAIN ANALYZE exécute la requête et compare les estimations à la réalité : c'est l'outil central du diagnostic.
- 05
Seq Scan, Index Scan, Bitmap : pourquoi le planificateur choisit
Un Seq Scan n'est pas un bug : sur une petite table, ou quand la requête ramène une grande part des lignes, lire séquentiellement est moins cher que sauter dans un index.
- 06
Statistiques, ANALYZE et autovacuum
Le planificateur estime les coûts à partir de statistiques (distribution des valeurs, nombre de lignes) : si elles sont obsolètes, il choisit de mauvais plans.
- 07
Les requêtes lentes classiques
La plupart des problèmes de performance en production tiennent en une poignée de motifs récurrents.
- 08
Trouver les requêtes lentes avec pg_stat_statements
Avant d'optimiser, mesurez : pg_stat_statements agrège les statistiques de toutes les requêtes exécutées, normalisées (paramètres remplacés).