Indici BRIN per grandi quantità di dati sequenziali
Scopra BRIN (Block Range INdexes), un tipo di indice compatto ideale per tabelle enormi con dati ordinati naturalmente, come serie temporali e log append-only.
Indici BRIN per grandi quantità di dati sequenziali è una lezione PostgreSQL Performance & Query Optimization 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 PostgreSQL Performance & Query Optimization, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PostgreSQL Performance & Query Optimization include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
What is a BRIN Index?
A BRIN (Block Range INdex) stores summary information about ranges of physical table blocks instead of pointing at individual rows. Each entry covers many pages, so the index is extremely small.
How BRIN Differs from B-tree
A B-tree has one entry per row and can be large. A BRIN keeps just the min and max value for each block range.
- B-tree: precise, big, great for random lookups
- BRIN: approximate, tiny, great for range scans on ordered data
When BRIN Shines
BRIN works best when the column's values correlate with physical storage order. Classic cases:
- Time-series tables ordered by inserted timestamp
- Append-only logs
- Large fact tables loaded in key order
Creating a BRIN Index
Use the USING brin clause. Notice how small and fast it is to build compared to a B-tree on the same column.
CREATE INDEX idx_events_ts_brin
ON events USING brin (created_at);Querying Through a BRIN
A range filter lets the planner skip block ranges whose min/max cannot match, reading only the relevant pages.
EXPLAIN ANALYZE
SELECT * FROM events
WHERE created_at >= '2026-01-01'
AND created_at < '2026-02-01';The pages_per_range Option
You can tune how many pages each summary entry covers. Smaller ranges make the index more precise but larger.
CREATE INDEX idx_events_ts_brin
ON events USING brin (created_at)
WITH (pages_per_range = 32);Why Correlation Matters
If the column is not physically ordered, almost every block range will overlap the search value and BRIN will scan the whole table. Check correlation with the stats view.
SELECT attname, correlation
FROM pg_stats
WHERE tablename = 'events';Summarizing New Data
BRIN entries for freshly inserted blocks may be unsummarized. Run this to summarize them so queries can prune those ranges.
SELECT brin_summarize_new_values('idx_events_ts_brin');Size Comparison
On a billion-row table a B-tree might be tens of gigabytes while a BRIN is a few megabytes. Compare them directly.
SELECT pg_size_pretty(pg_relation_size('idx_events_ts_brin'));Trade-offs to Remember
BRIN is not a free win:
- Useless on randomly ordered columns
- Slower for exact single-row lookups than B-tree
- Needs periodic summarization of new blocks
Pick it when the table is huge and naturally ordered.
Maintaining BRIN over Updates
If existing rows are heavily updated, a block range's min/max may widen and lose precision over time. For volatile data, periodically rebuild the index to restore tight ranges.
REINDEX INDEX idx_events_ts_brin;Quick Check
Test your BRIN knowledge.
Recap
You learned BRIN indexes:
- They store min/max summaries per block range — tiny footprint
- Ideal for large, physically ordered data like time-series
- Created with
USING brin; tunepages_per_range - Check
correlationfirst; summarize new blocks - Avoid them on randomly ordered columns
Impara SQL con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 22
- Lezioni
- 88
Domande Frequenti
La lezione «Indici BRIN per grandi quantità di dati sequenziali» è gratuita?
Sì — il testo completo di «Indici BRIN per grandi quantità di dati sequenziali» è 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 PostgreSQL Performance & Query Optimization, passa a CoddyKit PRO. Il corso PostgreSQL Performance & Query Optimization include 4 lezioni in totale.
Cosa imparerò in «Indici BRIN per grandi quantità di dati sequenziali»?
Scopra BRIN (Block Range INdexes), un tipo di indice compatto ideale per tabelle enormi con dati ordinati naturalmente, come serie temporali e log append-only. Eserciti PostgreSQL Performance & Query Optimization 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 PostgreSQL Performance & Query Optimization?
Non è richiesta alcuna esperienza precedente. PostgreSQL Performance & Query Optimization 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 «Indici BRIN per grandi quantità di dati sequenziali»?
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 PostgreSQL Performance & Query Optimization?
Sì. Ogni lezione PostgreSQL Performance & Query Optimization 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
- Indici Hash, GIN e GiST
- Indici parziali e su espressioni
- Indici covering e scansioni solo indice
- Indici BRIN per grandi quantità di dati sequenziali