Advanced PostgreSQL: Indexing, Partitioning, Replication · Pelajaran

Memantau Penggunaan Indeks

Pelajari cara memantau efektivitas indeks menggunakan tampilan sistem serta mengidentifikasi indeks yang tidak digunakan atau berkinerja rendah.

Pelajaran 2 dari 411 langkah

Memantau Penggunaan Indeks adalah pelajaran Advanced PostgreSQL: Indexing, Partitioning, Replication gratis di CoddyKit. Ini adalah pelajaran 2 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 Advanced PostgreSQL: Indexing, Partitioning, Replication, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Advanced PostgreSQL: Indexing, Partitioning, Replication mencakup 4 pelajaran total.

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

Why Monitor Index Usage?

Indexes are powerful tools for speeding up queries, but they aren't free. They consume disk space and add overhead to data modifications (INSERT, UPDATE, DELETE).

Monitoring index usage helps us understand if our indexes are actually working for us or just taking up space.

Introducing `pg_stat_user_indexes`

PostgreSQL provides several system views to monitor database activity. For index usage, the pg_stat_user_indexes view is your best friend.

This view tracks statistics for indexes on user-defined tables, giving you insights into how often each index is being scanned.

Key Index Usage Metrics

When you query pg_stat_user_indexes, look out for these columns:

  • idx_scan: The number of times the index has been scanned.
  • idx_tup_read: The number of index entries returned by scans.
  • idx_tup_fetch: The number of live table rows fetched through the index.

These tell you how frequently and effectively an index is being used.

Finding Unused Indexes

The easiest win in index optimization is identifying indexes that are never used. An index with idx_scan = 0 is a strong candidate for removal.

Removing unused indexes can reduce disk space, speed up writes, and simplify database maintenance.

Demo: Querying Unused Indexes

Let's run a query to find all indexes that have never been scanned since the last statistics reset. Try running this example:

SELECT
  relname AS table_name,
  indexrelname AS index_name,
  idx_scan
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY table_name, index_name;

Beyond Unused: Underperforming Indexes

An index might be used (idx_scan > 0) but still be 'underperforming' if it's not chosen by the query planner when it should be, or if it's leading to many sequential scans on the table itself.

To spot these, we need to compare index usage with overall table access patterns.

Table Scan Insights with `pg_stat_user_tables`

The pg_stat_user_tables view provides statistics at the table level. Key columns here are:

  • seq_scan: Number of sequential scans initiated on this table.
  • idx_scan: Number of index scans initiated on this table.

A high seq_scan count on a large table often indicates a missing or ineffective index.

Comparing Sequential vs. Index Scans

By comparing seq_scan and idx_scan from pg_stat_user_tables, we can identify tables that are frequently being scanned sequentially, even if indexes exist.

A high ratio of sequential scans to index scans on a table suggests potential indexing issues or queries that aren't utilizing available indexes.

Demo: Scan Ratio Query

This query calculates the percentage of sequential scans for each table. Tables with a high percentage of seq_scan might need attention.

SELECT
  relname AS table_name,
  seq_scan,
  idx_scan,
  (seq_scan * 100.0) / (CASE WHEN seq_scan + idx_scan = 0 THEN 1 ELSE seq_scan + idx_scan END) AS seq_scan_percent
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_scan_percent DESC;

Quick Check

You're trying to find indexes that are consuming disk space but are never being used by any query. Which PostgreSQL system view would you primarily consult for this information?

Recap & Next Steps

Great job! In this lesson, you learned how to monitor index effectiveness using PostgreSQL's system views.

  • pg_stat_user_indexes helps find unused indexes (idx_scan = 0).
  • pg_stat_user_tables reveals the balance between sequential and index scans on tables.
  • By combining these, you can identify indexes that are candidates for removal or further investigation.

In the next lesson, we'll dive into reindexing and maintaining index health!

Gratis untuk memulai

Belajar Advanced PostgreSQL: Indexing, Partitioning, Replication 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
11
Pelajaran
44

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Memantau Penggunaan Indeks” gratis?

Ya — teks lengkap “Memantau Penggunaan Indeks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Advanced PostgreSQL: Indexing, Partitioning, Replication, upgrade ke CoddyKit PRO. Kursus Advanced PostgreSQL: Indexing, Partitioning, Replication mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Memantau Penggunaan Indeks”?

Pelajari cara memantau efektivitas indeks menggunakan tampilan sistem serta mengidentifikasi indeks yang tidak digunakan atau berkinerja rendah. Kamu berlatih Advanced PostgreSQL: Indexing, Partitioning, Replication 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 Advanced PostgreSQL: Indexing, Partitioning, Replication?

Tidak diperlukan pengalaman sebelumnya. Advanced PostgreSQL: Indexing, Partitioning, Replication 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 2 dari 4.

Berapa lama pelajaran “Memantau Penggunaan Indeks” 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 Advanced PostgreSQL: Indexing, Partitioning, Replication ini?

Ya. Setiap pelajaran Advanced PostgreSQL: Indexing, Partitioning, Replication 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. Menganalisis Rencana Kueri dengan EXPLAIN
  2. Memantau Penggunaan Indeks
  3. Pengindeksan Ulang dan Pemeliharaan Indeks
  4. Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik
← Kembali ke Advanced PostgreSQL: Indexing, Partitioning, Replication