Membaca EXPLAIN dan EXPLAIN ANALYZE
Baca pohon rencana, pahami biaya dibanding waktu aktual, dan temukan simpul yang paling berat
Membaca EXPLAIN dan EXPLAIN ANALYZE adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 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 SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Mengapa EXPLAIN?
EXPLAIN menampilkan strategi perencana untuk menjalankan kueri — tanpa menjalankannya. EXPLAIN ANALYZE menjalankan kueri dan juga menampilkan waktu serta jumlah baris aktual.
EXPLAIN Dasar
Tampilkan rencana yang diperkirakan:
EXPLAIN SELECT * FROM orders WHERE user_id = 42;
-- QUERY PLAN
-- ---------------------------------------------------------------
-- Index Scan using orders_user_id_idx on orders
-- (cost=0.43..8.45 rows=5 width=120)
-- Index Cond: (user_id = 42)EXPLAIN ANALYZE
Menjalankan kueri dan menambahkan waktu serta jumlah baris aktual:
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 42;
-- Index Scan using orders_user_id_idx on orders
-- (cost=0.43..8.45 rows=5 width=120)
-- (actual time=0.041..0.043 rows=4 loops=1)
-- Planning Time: 0.082 ms
-- Execution Time: 0.057 msMembaca Pohon
Rencana berbentuk pohon. Indentasi menunjukkan node anak. Anak dijalankan sebelum induknya.
Aggregate
-> Hash Join
Hash Cond: (o.user_id = u.id)
-> Seq Scan on orders
-> Hash
-> Seq Scan on usersBiaya dibandingkan Waktu
Kolom cost memiliki DUA angka: startup_cost..total_cost. Angka-angka ini adalah satuan sembarang milik perencana, bukan detik. Gunakan actual time untuk angka nyata.
rows = Perkiraan; actual rows = Nyata
rows adalah perkiraan perencana. actual rows adalah hasil yang benar-benar terjadi. Jika keduanya sangat berbeda, statistiknya bermasalah.
Perulangan Mengalikan Waktu
Untuk perulangan bersarang, actual time=X loops=N berarti setiap iterasi memerlukan waktu X; total untuk setiap simpul adalah X×N.
Nested Loop (actual time=0.05..2.03 rows=500)
-> Seq Scan on orders (actual ... loops=1)
-> Index Scan using users_pkey (actual time=0.01..0.01 loops=500)BUFFERS Menunjukkan I/O
EXPLAIN (ANALYZE, BUFFERS) melaporkan jumlah buffer yang ditemukan dan dibaca—I/O yang mendasari durasi:
EXPLAIN (ANALYZE, BUFFERS) SELECT ...;
-- Buffers: shared hit=12 read=4Opsi FORMAT
Untuk pemrosesan terprogram, gunakan JSON atau YAML:
EXPLAIN (ANALYZE, FORMAT JSON) SELECT ...;Jangan Menjalankan EXPLAIN ANALYZE pada Pernyataan yang Mengubah Data
EXPLAIN ANALYZE pada UPDATE/DELETE/INSERT benar-benar menjalankannya. Bungkus dalam transaksi dengan ROLLBACK jika Anda ingin memeriksanya tanpa menyimpan perubahan:
BEGIN;
EXPLAIN ANALYZE DELETE FROM orders WHERE ...;
ROLLBACK;Simpul Rencana Umum
- Pemindaian Sekuensial — membaca seluruh tabel
- Pemindaian Indeks — menggunakan indeks
- Pemindaian Tabel Bitmap — menggabungkan beberapa indeks
- Penggabungan Hash / Penggabungan Merge / Perulangan Bersarang — strategi penggabungan
- Pengurutan, Agregasi, Batas, Materialisasi
Alur Membaca Rencana
- Jalankan EXPLAIN ANALYZE pada kueri yang lambat
- Temukan simpul dengan
actual timetertinggi - Bandingkan
rowsyang diperkirakan denganactual rows - Periksa apakah indeks sedang digunakan
- Ulangi: tambahkan indeks / tulis ulang / ANALYZE
Rangkuman
EXPLAIN ANALYZE adalah alat utama Anda untuk mengukur kinerja.
- Biaya bersifat relatif, waktu bersifat nyata
- Perbandingan baris yang diperkirakan dan aktual mengungkapkan masalah statistik
- BUFFERS menunjukkan I/O
- Bungkus kueri yang mengubah data dalam `BEGIN; ... ROLLBACK`
Pemeriksaan Singkat
Apa perbedaan antara EXPLAIN dan EXPLAIN ANALYZE?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Membaca EXPLAIN dan EXPLAIN ANALYZE” gratis?
Ya — teks lengkap “Membaca EXPLAIN dan EXPLAIN ANALYZE” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Membaca EXPLAIN dan EXPLAIN ANALYZE”?
Baca pohon rencana, pahami biaya dibanding waktu aktual, dan temukan simpul yang paling berat Kamu berlatih SQL Academy 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 SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 1 dari 4.
Berapa lama pelajaran “Membaca EXPLAIN dan EXPLAIN ANALYZE” 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 SQL Academy ini?
Ya. Setiap pelajaran SQL Academy 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
- Membaca EXPLAIN dan EXPLAIN ANALYZE
- Pemindaian Berurutan vs Pemindaian Indeks
- Hash Join vs Merge Join vs Nested Loop
- Mengidentifikasi dan Memperbaiki Kueri Lambat