0Pricing
SQL Academy · Lezione

Pianificazione della capacità e audit del bloat

Preveda la crescita del disco e degli IOPS, controlli regolarmente il bloat di tabelle e indici e pianifichi gli aggiornamenti prima di esaurire le risorse.

Pianificazione della capacità e audit del bloat è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.

Cosa prevedere

Per dimensionare il database per i prossimi 6–12 mesi deve stimare:

  • Utilizzo del disco (dati + WAL + indici)
  • Fabbisogno di IOPS
  • Working set in RAM
  • Numero di connessioni

Crescita del disco

Analizzi la tendenza della crescita recente:

SELECT pg_size_pretty(pg_database_size(current_database()));
SELECT pg_size_pretty(pg_total_relation_size(t.oid)) AS total,
       relname
FROM pg_class t
WHERE relkind = 'r'
ORDER BY pg_total_relation_size(t.oid) DESC LIMIT 20;

Monitorare la crescita per tabella

Pianifichi un job di registrazione delle metriche e ne rappresenti i dati in un grafico:

INSERT INTO size_history (ts, tablename, size_bytes)
SELECT NOW(), relname, pg_total_relation_size(oid)
FROM pg_class WHERE relkind = 'r';

Stima degli IOPS

Le tabelle con I/O di lettura più intenso sono visibili in pg_stat_user_tables:

SELECT relname, seq_tup_read, idx_tup_fetch,
       seq_tup_read + idx_tup_fetch AS total_reads
FROM pg_stat_user_tables
ORDER BY total_reads DESC LIMIT 20;

Dimensionamento della RAM

shared_buffers ≈ 25% della RAM. effective_cache_size ≈ 75% (suggerimento per il planner, non allocazione). work_mem per connessione × connections non dovrebbe superare la RAM disponibile.

Audit del bloat

Individui le tabelle con più righe morte:

SELECT relname,
       n_live_tup,
       n_dead_tup,
       round(n_dead_tup::numeric / NULLIF(n_live_tup, 0), 2) AS dead_ratio,
       last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;

Bloat degli indici

Usi pgstattuple o gli strumenti integrati:

CREATE EXTENSION pgstattuple;

SELECT relname,
       pg_size_pretty(pg_relation_size(indexrelid)) AS size,
       (pgstatindex(indexrelid::regclass)).leaf_fragmentation
FROM pg_stat_user_indexes
ORDER BY pg_relation_size(indexrelid) DESC LIMIT 20;

Indici inutilizzati

Li individui e li elimini: aumentano il costo delle scritture:

SELECT schemaname, relname, indexrelname,
       pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE idx_scan = 0
  AND indexrelname NOT LIKE '%_pkey'
ORDER BY pg_relation_size(indexrelid) DESC;

Audit delle connessioni

Quanti client sono connessi e in quale stato:

SELECT datname, usename, application_name, state, COUNT(*)
FROM pg_stat_activity
GROUP BY 1,2,3,4 ORDER BY 5 DESC;

Transazioni lunghe

La causa dell'arresto del vacuum:

SELECT pid, state, xact_start, NOW() - xact_start AS xact_age, query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL
ORDER BY xact_age DESC NULLS LAST LIMIT 20;

WAL e archivi

Monitori la velocità di generazione del WAL per dimensionare lo spazio di archiviazione:

SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), '0/0')) AS total_wal_generated;

Pianificare il failover

Il disco della replica dovrebbe avere le stesse dimensioni di quello del primary. Verifichi che la velocità di recupero della replica sia ≥ alla velocità di scrittura del primary.

Riepilogo

Pianificare la capacità significa rappresentare in un grafico le metriche giuste.

  • Crescita delle dimensioni per tabella
  • Rapporto di righe morte
  • Indici inutilizzati
  • Transazioni lunghe che bloccano il vacuum
  • Numero di connessioni

Verifica rapida

Quale vista interroga per individuare le tabelle con più righe morte ai fini della pianificazione del vacuum?

Domande Frequenti

La lezione «Pianificazione della capacità e audit del bloat» è gratuita?

Sì — il testo completo di «Pianificazione della capacità e audit del bloat» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.

Cosa imparerò in «Pianificazione della capacità e audit del bloat»?

Preveda la crescita del disco e degli IOPS, controlli regolarmente il bloat di tabelle e indici e pianifichi gli aggiornamenti prima di esaurire le risorse. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare SQL Academy?

Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Pianificazione della capacità e audit del bloat»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione SQL Academy?

Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. pg_stat_statements: query principali
  2. pgBadger per l’analisi dei log
  3. Pooling delle connessioni: PgBouncer
  4. Pianificazione della capacità e audit del bloat
← Torna a SQL Academy