0Pricing
PostgreSQL Performance & Query Optimization · Lektion

BRIN-Indizes für große sequenzielle Datenmengen

Entdecken Sie BRIN (Block Range INdexes), einen kleinen Indextyp für sehr große Tabellen mit natürlich geordneten Daten, etwa Zeitreihen und Append-only-Logs.

BRIN-Indizes für große sequenzielle Datenmengen ist eine kostenlose PostgreSQL Performance & Query Optimization-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PostgreSQL Performance & Query Optimization-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PostgreSQL Performance & Query Optimization-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

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; tune pages_per_range
  • Check correlation first; summarize new blocks
  • Avoid them on randomly ordered columns

Häufig gestellte Fragen

Ist die Lektion „BRIN-Indizes für große sequenzielle Datenmengen“ kostenlos?

Ja — der vollständige Text von „BRIN-Indizes für große sequenzielle Datenmengen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PostgreSQL Performance & Query Optimization-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PostgreSQL Performance & Query Optimization-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „BRIN-Indizes für große sequenzielle Datenmengen“?

Entdecken Sie BRIN (Block Range INdexes), einen kleinen Indextyp für sehr große Tabellen mit natürlich geordneten Daten, etwa Zeitreihen und Append-only-Logs. Du übst PostgreSQL Performance & Query Optimization mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PostgreSQL Performance & Query Optimization zu starten?

Keine Vorkenntnisse erforderlich. PostgreSQL Performance & Query Optimization auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „BRIN-Indizes für große sequenzielle Datenmengen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PostgreSQL Performance & Query Optimization-Lektion Code schreiben und ausführen?

Ja. Jede PostgreSQL Performance & Query Optimization-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Hash-, GIN- und GiST-Indizes
  2. Partielle und Ausdrucksindizes
  3. Abdeckende Indizes und Index-Only-Scans
  4. BRIN-Indizes für große sequenzielle Datenmengen
← Zurück zu PostgreSQL Performance & Query Optimization