Advisory Locks
PostgreSQL 🔴 SeniorDéfinition
Verrous coopératifs applicatifs gères par PostgreSQL. Contrairement aux verrous de table, ils n'ont de sens que pour l'application qui les utilise. Peuvent être session-level ou transaction-level.
Analogie
Un panneau 'Occupe' sur une cabine : c'est l'application qui le respecte, pas la base qui bloque.
Exemple de code
-- Verrou au niveau session
SELECT pg_advisory_lock(42);
-- ... logique exclusive ...
SELECT pg_advisory_unlock(42);
Cas d'usage
Éviter les exécutions concurrentes de cron jobs ou de migrations sur la même ressource logique.
Termes liés
En entretien
Explique-moi ce qu'est un advisory lock et en quoi il diffère d'un verrou de table classique.
Un advisory lock est un verrou coopératif applicatif géré par PostgreSQL, qui n'a de sens que pour l'application qui l'utilise, contrairement aux verrous de table qui bloquent réellement les accès. C'est comme un panneau 'Occupé' que l'application doit respecter elle-même.
Dans quel cas concret utiliserais-tu un advisory lock ?
Pour éviter les exécutions concurrentes de cron jobs ou de migrations sur la même ressource logique. On pose le verrou avec pg_advisory_lock() et on le libère avec pg_advisory_unlock() une fois la logique exclusive terminée.
Fiche mise à jour le 2026-09-27