Panduan PostgreSQL Performance Tuning — Index, Vacuum, Explain Analyze 2026
Panduan PostgreSQL Performance Tuning — Index, Vacuum, Explain Analyze 2026
PostgreSQL performance tuning: Database yang lambat adalah musuh production. Artikel ini mencakup 4 pilar utama optimasi PostgreSQL — indexing, VACUUM, EXPLAIN ANALYZE, dan connection pooling — dengan query nyata dan benchmark.
1. Indexing Strategy — Lebih dari Sekadar CREATE INDEX
Index B-Tree adalah default PostgreSQL. Tapi banyak developer tidak paham kapan pakai GIN, GiST, atau BRIN. Rule of thumb: B-Tree untuk equality/range queries, GIN untuk full-text search dan array, GiST untuk geometri, BRIN untuk tabel sangat besar dengan data terurut.
-- Cek index usage
SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch
FROM pg_stat_user_indexes WHERE idx_scan = 0 ORDER BY pg_relation_size(indexrelid) DESC;
Query di atas menemukan unused indexes — index yang tidak pernah dipakai tapi makan storage dan slow down INSERT/UPDATE.
2. VACUUM — Kenapa Wajib & Kapan
PostgreSQL pakai MVCC (Multi-Version Concurrency Control). Setiap UPDATE/DELETE menciptakan dead tuples. VACUUM membersihkan ini. Tanpa VACUUM rutin, tabel membengkak, query lambat, dan bisa kena transaction ID wraparound.
-- Cek dead tuples
SELECT schemaname, relname, n_live_tup, n_dead_tup,
round(100.0 * n_dead_tup / NULLIF(n_live_tup + n_dead_tup, 0), 2) AS dead_pct
FROM pg_stat_user_tables WHERE n_dead_tup > 1000 ORDER BY dead_pct DESC;
3. EXPLAIN ANALYZE — Baca Query Plan
EXPLAIN ANALYZE adalah tool utama debugging slow query. Yang perlu diperhatikan: Seq Scan (table scan) di tabel >10K rows = perlu index. Nested Loop di join besar = lambat. Hash Join = optimal untuk dataset besar.
FAQ — PostgreSQL Performance
Apa itu VACUUM di PostgreSQL?
VACUUM membersihkan dead tuples dari MVCC, mencegah table bloat dan transaction ID wraparound. Wajib dijalankan rutin di production.
Kapan pakai BRIN vs B-Tree index?
- B-Tree: data acak, butuh lookup cepat. Pakai untuk primary key, foreign key.
- BRIN: data terurut fisik (timestamp). Jauh lebih kecil dari B-Tree. Cocok untuk log tables.
Kesimpulan
PostgreSQL performance adalah kombinasi indexing tepat, VACUUM rutin, query analysis, dan monitoring. Mulai dari 4 pilar di atas, dan database Anda siap production. EverDev Pro punya lebih banyak tutorial DevOps dan database.