Advanced PostgreSQL: Indexing, Partitioning, Replication · Leçon

Diagnostic de la fragmentation et stratégie de nettoyage

Comprenez comment MVCC crée de la fragmentation dans les tables et les index, comment la mesurer et comment régler le nettoyage automatique pour maintenir de hautes performances.

Leçon 4 sur 413 étapes

Diagnostic de la fragmentation et stratégie de nettoyage est une leçon Advanced PostgreSQL: Indexing, Partitioning, Replication gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Advanced PostgreSQL: Indexing, Partitioning, Replication, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Advanced PostgreSQL: Indexing, Partitioning, Replication comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

MVCC and Dead Tuples

PostgreSQL uses MVCC: updates and deletes leave behind old row versions called dead tuples. Until they are cleaned up, they occupy space and slow scans. This wasted space is bloat.

What VACUUM Does

VACUUM reclaims dead tuples for reuse and updates visibility information. It usually does not return space to the OS; VACUUM FULL does but rewrites the whole table and takes a strong lock.

Measuring Bloat

Inspect dead tuple counts per table from the statistics view.

SELECT relname, n_live_tup, n_dead_tup,
       last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;

Autovacuum Basics

Autovacuum runs in the background, triggering when dead tuples exceed a threshold based on table size and the scale factor setting.

-- trigger ~ threshold + scale_factor * n_live_tup
autovacuum_vacuum_scale_factor = 0.2

Tuning Hot Tables

For large, frequently updated tables, the default 20% scale factor is too lazy. Lower it per table so vacuum runs more often on less garbage.

ALTER TABLE orders SET (
  autovacuum_vacuum_scale_factor = 0.02);

Vacuum Throttling

Autovacuum throttles itself with cost limits to avoid I/O storms. On modern hardware you can raise autovacuum_vacuum_cost_limit so vacuum finishes faster.

autovacuum_vacuum_cost_limit = 2000

Transaction ID Wraparound

VACUUM also prevents transaction ID wraparound, a catastrophic condition. Aggressive anti-wraparound vacuums are non-negotiable and cannot be skipped.

SELECT datname, age(datfrozenxid)
FROM pg_database ORDER BY 2 DESC;

Index Bloat

Indexes bloat too. REINDEX CONCURRENTLY rebuilds an index without blocking writes, restoring its compactness.

REINDEX INDEX CONCURRENTLY orders_pkey;

HOT Updates

Heap-Only Tuple updates avoid index churn when no indexed column changes. Leaving some free space via a lower fillfactor helps HOT updates and reduces bloat.

ALTER TABLE orders SET (fillfactor = 90);

VACUUM vs ANALYZE

VACUUM reclaims space; ANALYZE refreshes the planner statistics. Autovacuum does both, but after big bulk loads run ANALYZE manually for fresh plans.

ANALYZE orders;

A Monitoring Habit

Alert on rising n_dead_tup, growing table size with stable row counts, and high age(datfrozenxid). These early signals let you tune before queries slow down.

Quick Check

A large, hot table keeps growing despite stable row counts. What is the likely cause and fix?

Recap

You learned to diagnose bloat from MVCC dead tuples, measure it with pg_stat_user_tables, tune autovacuum per table, guard against ID wraparound, and use REINDEX CONCURRENTLY and fillfactor to keep performance high.

Gratuit pour commencer

Apprends Advanced PostgreSQL: Indexing, Partitioning, Replication avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
11
Leçons
44

Questions Fréquemment Posées

La leçon « Diagnostic de la fragmentation et stratégie de nettoyage » est-elle gratuite ?

Oui — le texte complet de « Diagnostic de la fragmentation et stratégie de nettoyage » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Advanced PostgreSQL: Indexing, Partitioning, Replication, passe à CoddyKit PRO. Le cours Advanced PostgreSQL: Indexing, Partitioning, Replication comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Diagnostic de la fragmentation et stratégie de nettoyage » ?

Comprenez comment MVCC crée de la fragmentation dans les tables et les index, comment la mesurer et comment régler le nettoyage automatique pour maintenir de hautes performances. Tu pratiques Advanced PostgreSQL: Indexing, Partitioning, Replication avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Advanced PostgreSQL: Indexing, Partitioning, Replication ?

Aucune expérience préalable n'est requise. Advanced PostgreSQL: Indexing, Partitioning, Replication sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Diagnostic de la fragmentation et stratégie de nettoyage » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Advanced PostgreSQL: Indexing, Partitioning, Replication ?

Oui. Chaque leçon Advanced PostgreSQL: Indexing, Partitioning, Replication inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Optimisation globale des performances
  2. Surveillance et alertes avancées
  3. Évolutions futures de PostgreSQL
  4. Diagnostic de la fragmentation et stratégie de nettoyage
← Retour à Advanced PostgreSQL: Indexing, Partitioning, Replication