SQL Academy · Pelajaran

pg_stat_statements: Kueri Teratas

Aktifkan pg_stat_statements, temukan kueri terberat berdasarkan total waktu, dan prioritaskan kueri tersebut untuk dioptimalkan

Pelajaran 1 dari 414 langkah

pg_stat_statements: Kueri Teratas 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.

Informasi yang Disediakan pg_stat_statements

Catatan kumulatif setiap kueri yang dinormalisasi berdasarkan bentuknya — alat DBA yang paling berguna di PostgreSQL.

Aktifkan

Ini adalah ekstensi contrib. Tambahkan ke shared_preload_libraries lalu mulai ulang:

-- postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

-- After restart:
CREATE EXTENSION pg_stat_statements;

Kueri Teratas Berdasarkan Total Waktu

Kueri "ke mana CPU saya digunakan":

SELECT calls,
       total_exec_time,
       mean_exec_time,
       rows,
       query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Kueri Lambat per Panggilan

Kueri yang lambat pada setiap panggilan:

SELECT mean_exec_time, calls, query
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC
LIMIT 20;

Kueri Ringan yang Sering Dipanggil

Satu juta kueri berdurasi 1 milidetik tetap menjadi masalah:

SELECT calls, mean_exec_time, total_exec_time, query
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Normalisasi

pg_stat_statements mengelompokkan kueri berdasarkan bentuk yang dinormalisasi — literal diganti dengan $N. Jadi "SELECT * FROM users WHERE id = 1" dan "= 2" menjadi baris yang sama.

Mengatur Ulang Statistik

Mulai dari awal setelah penerapan untuk mengukur perilaku baru:

SELECT pg_stat_statements_reset();

Waktu I/O vs CPU

Versi PG yang lebih baru memisahkan waktu eksekusi. shared_blks_hit / shared_blks_read memberikan petunjuk tentang penggunaan cache atau disk:

SELECT query, shared_blks_hit, shared_blks_read,
       shared_blks_read::FLOAT / NULLIF(shared_blks_hit + shared_blks_read, 0) AS read_ratio
FROM pg_stat_statements
ORDER BY shared_blks_read DESC LIMIT 20;

JIT dan Waktu PLANNING

PG 13+ menyediakan total_plan_time. Beberapa kueri menghabiskan lebih banyak waktu PLANNING daripada waktu berjalan — biasanya ini tanda bahwa Anda perlu menggunakan pernyataan ter-preparasi.

Statistik per Basis Data / per Pengguna

pg_stat_statements berlaku di seluruh cluster. Filter berdasarkan kolom dbid dan userid untuk mendapatkan tampilan per basis data atau per pengguna.

Menggabungkan dengan EXPLAIN ANALYZE

pg_stat_statements memberi tahu kueri WHICH yang lambat. EXPLAIN ANALYZE memberi tahu WHY.

Hal yang Perlu Diperhatikan

  • Akumulasi per basis data dan per pengguna dapat menyembunyikan masalah — lihat totalnya
  • Tidak melacak waktu per baris, hanya total per panggilan
  • Diatur ulang saat dimulai ulang atau saat fungsi pengaturan ulang dipanggil

Ringkasan

pg_stat_statements wajib digunakan dalam produksi.

  • Teratas berdasarkan total waktu → dampak terbesar
  • Teratas berdasarkan rata-rata → kelambatan yang konsisten
  • Teratas berdasarkan jumlah panggilan → masalah frekuensi
  • Padukan dengan EXPLAIN untuk melakukan perbaikan

Pemeriksaan Singkat

Anda telah mengaktifkan pg_stat_statements. Kueri mana yang memberikan peningkatan kinerja terbesar untuk diselidiki?

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
46
Pelajaran
183

Pertanyaan yang Sering Diajukan

Apakah pelajaran “pg_stat_statements: Kueri Teratas” gratis?

Ya — teks lengkap “pg_stat_statements: Kueri Teratas” 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 “pg_stat_statements: Kueri Teratas”?

Aktifkan pg_stat_statements, temukan kueri terberat berdasarkan total waktu, dan prioritaskan kueri tersebut untuk dioptimalkan 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 “pg_stat_statements: Kueri Teratas” 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

  1. pg_stat_statements: Kueri Teratas
  2. pgBadger untuk Analisis Log
  3. Pengumpulan Koneksi: PgBouncer
  4. Perencanaan Kapasitas dan Audit Bloat
← Kembali ke SQL Academy