PostgreSQL Performance & Query Optimization · Pelajaran

Indeks BRIN untuk Data Sekuensial Berskala Besar

Temukan BRIN (Block Range INdexes), jenis indeks berukuran kecil yang ideal untuk tabel raksasa dengan data yang tersusun secara alami, seperti rangkaian waktu dan log yang hanya ditambahkan.

Pelajaran 4 dari 413 langkah

Indeks BRIN untuk Data Sekuensial Berskala Besar adalah pelajaran PostgreSQL Performance & Query Optimization gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PostgreSQL Performance & Query Optimization, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PostgreSQL Performance & Query Optimization mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

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
Gratis untuk memulai

Belajar SQL dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
22
Pelajaran
88

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Indeks BRIN untuk Data Sekuensial Berskala Besar” gratis?

Ya — teks lengkap “Indeks BRIN untuk Data Sekuensial Berskala Besar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PostgreSQL Performance & Query Optimization, upgrade ke CoddyKit PRO. Kursus PostgreSQL Performance & Query Optimization mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Indeks BRIN untuk Data Sekuensial Berskala Besar”?

Temukan BRIN (Block Range INdexes), jenis indeks berukuran kecil yang ideal untuk tabel raksasa dengan data yang tersusun secara alami, seperti rangkaian waktu dan log yang hanya ditambahkan. Kamu berlatih PostgreSQL Performance & Query Optimization dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PostgreSQL Performance & Query Optimization?

Tidak diperlukan pengalaman sebelumnya. PostgreSQL Performance & Query Optimization di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Indeks BRIN untuk Data Sekuensial Berskala Besar” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PostgreSQL Performance & Query Optimization ini?

Ya. Setiap pelajaran PostgreSQL Performance & Query Optimization menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Indeks Hash, GIN, dan GiST
  2. Indeks Parsial dan Indeks Ekspresi
  3. Indeks Peliput dan Pemindaian Hanya Indeks
  4. Indeks BRIN untuk Data Sekuensial Berskala Besar
← Kembali ke PostgreSQL Performance & Query Optimization