> ## Content Index
> Fetch the complete content index at: https://www.sfeir.dev/llms.txt
> Use this file to discover other available public pages before exploring further.

# Boostez les Performances PostgreSQL : Guide Complet sur PgBadger et Depesz
- URL: https://www.sfeir.dev/back/identifiez-et-analysez-les-requetes-sql-problematiques-optimisation-avec-pgbadger-et-depesz/
- Published: 2025-05-15T09:29:44.000Z
- Updated: 2025-05-15T09:29:44.000Z
- Description: Optimisez vos requêtes SQL grâce à PgBadger et Depesz : deux outils puissants pour analyser vos logs PostgreSQL et décrypter vos plans d'exécution. Découvrez comment identifier les requêtes lentes, comprendre leurs goulots d'étranglement et améliorer les performances de vos bases de données.
- Author: Pierre-Alexandre MANÇAUX
- Tags: Back, Postgresql, Data, SQL, Tools

## **Pourquoi l'optimisation SQL est cruciale pour PostgreSQL**

Dans un monde où les performances des bases de données sont un facteur clé de succès pour les applications modernes, optimiser vos requêtes SQL est essentiel. PostgreSQL, l'un des systèmes de gestion de bases de données les plus populaires, offre des outils natifs comme `EXPLAIN ANALYZE` pour analyser les requêtes, comme vous pouvez le voir dans [mon précédent article](https://www.sfeir.dev/back/decryptez-et-optimisez-vos-requetes-sql-postgresql-avec-explain/). Cependant, pour aller plus loin, des outils comme **PgBadger** et **Depesz** permettent d'identifier rapidement les requêtes problématiques et de comprendre leurs plans d'exécution. Dans cet article, je vous guide étape par étape pour tirer parti de ces outils et améliorer les performances de vos bases de données PostgreSQL.

## **PgBadger : Analysez vos logs PostgreSQL en profondeur**

### **Qu'est-ce que PgBadger ?**

[pgBadger](https://github.com/darold/pgbadger?ref=sfeir.dev) est un analyseur de logs PostgreSQL qui génère des rapports détaillés sur les performances des requêtes SQL, les erreurs fréquentes, et d'autres métriques essentielles. Successeur de PgFouine, cet outil est devenu incontournable pour les administrateurs de bases de données et développeurs cherchant à optimiser leurs systèmes.

### **Pourquoi utiliser PgBadger ?**

- **Vue d'ensemble des performances** : PgBadger fournit des rapports interactifs en HTML, permettant une exploration visuelle des données.
- **Identification des requêtes lentes** : Grâce à ses analyses, vous pouvez repérer rapidement les requêtes SQL les plus coûteuses.
- **Détection des anomalies** : PgBadger met en évidence les comportements inhabituels, comme des requêtes exécutées des milliers de fois en boucle.

---

### **Configurer PostgreSQL pour PgBadger**

Pour utiliser PgBadger, vous devez d'abord configurer PostgreSQL pour enregistrer les informations nécessaires dans les fichiers de log. Voici les étapes clés :

**Modifier le fichier postgresql.conf :**

Pour cela il faut modifier le fichier de configuration postgresql.conf en modifiant les paramètres suivants

```
  log_destination = 'stderr'
  log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
  log_statement = 'none'
  log_duration = off
  log_min_duration_statement = 500
  log_checkpoints = on
  log_connections = on
  log_disconnections = on
  log_lock_waits = on
  log_temp_files = 0
  lc_messages = 'C'

```

**log\_min\_duration\_statement :** Enregistre les requêtes dont la durée dépasse 500 ms. Ce seuil peut être ajusté progressivement.  
**log\_line\_prefix :** Inclut des informations utiles comme l'utilisateur, la base de données, et le client.

Les autres paramètres enregistrent des informations qui pourront être utile dans le rapport

💡

****Redémarrez PostgreSQL pour appliquer les modifications**

---

### **Utiliser PgBadger pour générer des rapports**

Une fois les logs configurés, suivez ces étapes pour utiliser PgBadger :

1. **Installer PgBadger** : Consultez la [documentation officielle](https://github.com/darold/pgbadger?ref=sfeir.dev) pour les instructions d'installation.
2. **Analyser les logs PostgreSQL** : `pgbadger [path_to_pg_log]/postgresql-*.log -o report.html ` Cette commande génère un rapport HTML interactif.
3. **Visualiser le rapport** : Ouvrez le fichier `report.html` dans un navigateur pour explorer les données.

![](https://storage.ghost.io/c/0b/31/0b31478e-a66a-46f1-8c34-d44388e21192/content/images/2025/01/Capture-d-e-cran-2025-01-28-a--13.12.02.png)

Tableau de bord de PgBadger

Le tableau de bord présente une vue d'ensemble de l'activité de la base de données. La section la plus pertinente est l'onglet 'Top', qui fournit une analyse détaillée de toutes les requêtes SQL exécutées, permettant d'identifier facilement les requêtes les plus fréquentes, leur temps d'exécution et leur impact sur les performances du système.

![](https://storage.ghost.io/c/0b/31/0b31478e-a66a-46f1-8c34-d44388e21192/content/images/2025/01/Capture-d-e-cran-2025-01-28-a--13.14.44.png)

Most frequent queries (N)

La section 'Most Frequent Queries (N)' est un indicateur précieux qui affiche la fréquence d'exécution de chaque requête unique sur une période donnée. Cette métrique est particulièrement utile pour détecter des anomalies dans le comportement applicatif. Par exemple, j'ai déjà pu identifier des problèmes de conception dans le code source quand une même requête était exécutée des milliers de fois dans un intervalle très court, révélant souvent une boucle mal optimisée ou un appel redondant à la base de données.

La section 'Slowest Individual Queries' est également cruciale car elle met en évidence les requêtes ayant les temps d'exécution les plus longs. Cette vue nous permet d'identifier précisément les requêtes qui nécessitent une optimisation prioritaire, en nous montrant leur durée d'exécution détaillée.

![](https://storage.ghost.io/c/0b/31/0b31478e-a66a-46f1-8c34-d44388e21192/content/images/2025/01/image-10.png)

Slowest individual queries 

Dans cet exemple, nous observons une requête particulièrement lente avec un temps d'exécution de 3 secondes et 860 millisecondes. Pour optimiser cette requête, il serait judicieux d'utiliser la commande EXPLAIN ANALYZE. Cette commande nous fournira un plan d'exécution détaillé qui nous permettra d'identifier les goulots d'étranglement et de déterminer quels index seraient les plus pertinents à mettre en place pour améliorer les performances.

---

## **Depesz : Comprendre vos plans d'exécution PostgreSQL**

### **Qu'est-ce que Depesz ?**

Le site [explain.depesz.com](https://explain.depesz.com/?ref=sfeir.dev) vous permet de copier-coller un plan d'exécution PostgreSQL et de le visualiser sous une forme plus lisible et interactive. Il met en évidence les parties du plan qui prennent le plus de temps et fournit des explications détaillées sur chaque étape du plan d'exécution.

![](https://storage.ghost.io/c/0b/31/0b31478e-a66a-46f1-8c34-d44388e21192/content/images/2025/01/image-11.png)

### **Comment utiliser Depesz ?**

1. Obtenez un plan d'exécution:  
Utilisez `EXPLAIN ANALYZE` pour obtenir un plan d'exécution détaillé de votre requête SQL.  
`EXPLAIN ANALYZE SELECT * FROM employees WHERE department_id = 1;`
2. Copiez le plan d'exécution généré par PostgreSQL.
3. Rendez-vous sur le site [https://explain.depesz.com/](https://explain.depesz.com/?ref=sfeir.dev) et collez le plan d'exécution dans le champ prévu à cet effet.
4. Cliquez sur "Submit" pour visualiser le plan d'exécution. Le site mettra en évidence les parties du plan qui prennent le plus de temps et fournira des explications détaillées sur chaque étape.

Prenons une requête lente identifiée par PgBadger. En utilisant Depesz, vous pouvez visualiser les étapes d'exécution et détecter les goulots d'étranglement. Par exemple :

![](https://storage.ghost.io/c/0b/31/0b31478e-a66a-46f1-8c34-d44388e21192/content/images/2025/01/image-12.png)

Le site Depesz propose une visualisation plus intuitive des résultats d'EXPLAIN grâce à son système de code couleur, permettant d'identifier rapidement les points critiques dans le plan d'exécution sans avoir à analyser en détail chaque ligne du résultat.

## Conclusion

PgBadger et Depesz sont des outils indispensables pour tout développeur ou administrateur travaillant avec PostgreSQL. En combinant l'analyse des logs et la visualisation des plans d'exécution, vous pouvez identifier rapidement les requêtes lentes, comprendre leurs points faibles, et appliquer des optimisations ciblées. Avec ces outils, vos bases de données PostgreSQL seront prêtes à relever les défis des applications modernes.