Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik
Pelajari cara perencana PostgreSQL mengandalkan statistik tabel untuk memilih indeks, serta cara menjaga statistik tersebut tetap terbaru agar rencana kueri tetap cepat.
Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik adalah pelajaran Advanced PostgreSQL: Indexing, Partitioning, Replication 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 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.
The Planner Needs Data About Data
PostgreSQL's planner picks between index scans and sequential scans using statistics about your tables: row counts, value distributions, and more.
Stale statistics lead to bad plans.
What ANALYZE Does
The ANALYZE command samples a table and updates statistics stored in the system catalogs, so the planner estimates row counts accurately.
ANALYZE orders;Autovacuum and Autoanalyze
The autovacuum daemon also runs ANALYZE automatically when enough rows change. But heavy bulk loads may need a manual ANALYZE right away.
Reading Estimates vs Actuals
Use EXPLAIN ANALYZE to compare the planner's estimated rows with actual rows. A big gap signals stale or insufficient statistics.
EXPLAIN ANALYZE SELECT * FROM orders WHERE status = 'paid';Statistics Target
The default_statistics_target controls sample size. Raise it on columns with skewed data for sharper histograms.
ALTER TABLE orders ALTER COLUMN status SET STATISTICS 500;Why Bad Estimates Hurt
If the planner underestimates matching rows it may pick an index scan that becomes slow; overestimate and it may skip a perfectly good index for a seq scan.
Inspecting pg_stats
The pg_stats view exposes the collected statistics like most common values and null fraction per column.
SELECT attname, n_distinct, null_frac FROM pg_stats WHERE tablename = 'orders';Extended Statistics
For correlated columns, create extended statistics so the planner understands dependencies between them.
CREATE STATISTICS orders_corr (dependencies) ON city, zip FROM orders;Cost Parameters
Settings like random_page_cost tell the planner how expensive random I/O is. On SSDs, lowering it makes index scans more attractive.
SET random_page_cost = 1.1;When the Index Is Ignored
If an index exists but is unused, suspect:
- Stale statistics
- Low selectivity (most rows match)
- A type mismatch preventing index use
A Tuning Workflow
- Run EXPLAIN ANALYZE
- Check estimate vs actual gap
- ANALYZE or raise statistics target
- Adjust cost settings if needed
- Re-measure
Quick Check
Test your statistics tuning knowledge.
Recap
The PostgreSQL planner chooses indexes based on statistics kept fresh by ANALYZE and autovacuum.
Compare estimated versus actual rows with EXPLAIN ANALYZE, raise the statistics target for skewed columns, add extended statistics for correlated ones, and tune cost parameters to guide index choice.
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 “Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik” gratis?
Ya — teks lengkap “Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik” 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 “Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik”?
Pelajari cara perencana PostgreSQL mengandalkan statistik tabel untuk memilih indeks, serta cara menjaga statistik tersebut tetap terbaru agar rencana kueri tetap cepat. 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 4 dari 4.
Berapa lama pelajaran “Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik” 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
- Menganalisis Rencana Kueri dengan EXPLAIN
- Memantau Penggunaan Indeks
- Pengindeksan Ulang dan Pemeliharaan Indeks
- Menyesuaikan Biaya Indeks dengan ANALYZE dan Statistik