Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

6. Locking & Concurrency

Gestion des verrous, niveaux d’isolation, deadlocks, verrous implicites/explicites.

Retour à Postgresql
Objectif: 🎯 Objectif du composant
Prévenir les blocages, les interblocages (deadlocks), améliorer le débit des transactions et assurer une exécution fluide sous forte concurrence.
Paramètres: ⚙️ Paramètres concernés
max_connections, deadlock_timeout, lock_timeout, idle_in_transaction_session_timeout, default_transaction_isolation, log_lock_waits
Bonnes pratiques: ✅ Bonnes pratiques
- Rendre les transactions aussi courtes que possible - Activer log_lock_waits pour identifier les blocages - Fixer des timeouts pour éviter les blocages éternels - Surveiller pg_locks pour détecter les conflits
Pièges à éviter: ⚠️ Pièges à éviter
- Transactions longues = verrou durable - Oublier de COMMIT ou ROLLBACK - timeout absents ou trop longs - deadlock_timeout trop haut = lente détection
Recommandations: 👤 Recommandations par profil
OLTP : lock_timeout 3s, deadlock_timeout 1s BI : valeurs plus longues tolérées Développement : tout loguer et monitorer les verrous
Exemples: 🧪 Exemples de réglage
ALTER SYSTEM SET lock_timeout = '3s'; ALTER SYSTEM SET log_lock_waits = on; ALTER SYSTEM SET idle_in_transaction_session_timeout = '10s';
Commandes utiles: 🛠️ Commandes utiles
SELECT * FROM pg_locks; SELECT * FROM pg_stat_activity WHERE wait_event_type = 'Lock'; SHOW deadlock_timeout;
Références: 🔗 Références officielles
- https://www.postgresql.org/docs/current/explicit-locking.html - https://wiki.postgresql.org/wiki/Lock_Monitoring - https://www.cybertec-postgresql.com/en/monitoring-postgresql-locks/