SQL Academy · Pelajaran

pg_stat_statements: Pertanyaan Teratas

Dayakan pg_stat_statements, cari pertanyaan paling berat berdasarkan jumlah masa, dan sasarkan pertanyaan tersebut untuk pengoptimuman.

Pelajaran 1 daripada 414 langkah

pg_stat_statements: Pertanyaan Teratas ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Perkara yang Diberikan oleh pg_stat_statements

Rekod terkumpul bagi setiap kueri, dinormalkan mengikut bentuk — alat DBA yang paling berguna dalam PostgreSQL.

Dayakannya

Ia ialah sambungan tambahan. Tambahkannya pada shared_preload_libraries dan mulakan semula:

-- postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

-- After restart:
CREATE EXTENSION pg_stat_statements;

Kueri Teratas Mengikut Jumlah Masa

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 Perlahan bagi Setiap Panggilan

Kueri yang perlahan 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 Murah yang Kerap

Sejuta kueri 1ms masih merupakan masalah:

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

Penormalan

pg_stat_statements mengumpulkan kueri mengikut bentuk yang dinormalkan — literal digantikan dengan $N. Jadi "SELECT * FROM users WHERE id = 1" dan "= 2" menjadi baris yang sama.

Menetapkan Semula Statistik

Mulakan dengan data baharu selepas penggunaan baharu untuk mengukur tingkah laku terkini:

SELECT pg_stat_statements_reset();

Masa I/O berbanding CPU

Versi PG yang lebih baharu memisahkan masa pelaksanaan. shared_blks_hit / shared_blks_read memberikan petunjuk tentang cache berbanding cakera:

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 Masa Perancangan

PG 13+ mendedahkan total_plan_time. Sesetengah kueri mengambil lebih banyak masa untuk PLANNING berbanding pelaksanaan — biasanya ini petanda bahawa pernyataan tersedia patut digunakan.

Statistik Mengikut Pangkalan Data / Pengguna

pg_stat_statements meliputi seluruh kelompok. Tapis mengikut lajur dbid dan userid untuk mendapatkan paparan mengikut pangkalan data / pengguna.

Menggabungkan dengan EXPLAIN ANALYZE

pg_stat_statements memberitahu anda kueri yang manakah perlahan. EXPLAIN ANALYZE memberitahu anda sebabnya.

Perkara yang Perlu Diberi Perhatian

  • Pengumpulan mengikut pangkalan data dan pengguna boleh menyembunyikan masalah — lihat jumlah keseluruhan
  • Tidak menjejaki masa bagi setiap baris, hanya jumlah bagi setiap panggilan
  • Ditetapkan semula apabila dimulakan semula atau apabila panggilan tetapan semula dibuat

Ringkasan

pg_stat_statements wajib digunakan dalam persekitaran produksi.

  • Teratas mengikut jumlah masa → keuntungan terbesar
  • Teratas mengikut purata → kelambatan yang konsisten
  • Teratas mengikut bilangan panggilan → masalah kekerapan
  • Gabungkan dengan EXPLAIN untuk pembaikan

Semakan Pantas

Anda telah mendayakan pg_stat_statements. Kueri manakah yang memberikan peningkatan prestasi terbesar untuk disiasat?

Percuma untuk bermula

Pelajari SQL dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
46
Pelajaran
183

Soalan Lazim

Adakah pelajaran “pg_stat_statements: Pertanyaan Teratas” percuma?

Ya — teks penuh “pg_stat_statements: Pertanyaan Teratas” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “pg_stat_statements: Pertanyaan Teratas”?

Dayakan pg_stat_statements, cari pertanyaan paling berat berdasarkan jumlah masa, dan sasarkan pertanyaan tersebut untuk pengoptimuman. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “pg_stat_statements: Pertanyaan Teratas” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. pg_stat_statements: Pertanyaan Teratas
  2. pgBadger untuk Analisis Log
  3. Pengumpulan Sambungan: PgBouncer
  4. Perancangan Kapasiti dan Audit Pengembungan
← Kembali ke SQL Academy