Bagikan melalui


Memantau menggunakan pg_stat_statements

Penting

Lakebase Autoscaling berada di Beta di wilayah berikut: eastus2, , westeuropewestus.

Lakebase Autoscaling adalah versi terbaru Lakebase dengan komputasi penskalaan otomatis, skala-ke-nol, percabangan, dan pemulihan instan. Untuk perbandingan fitur dengan Lakebase Provisioned, lihat memilih antar versi.

pg_stat_statements adalah ekstensi Postgres yang menyediakan tampilan statistik terperinci tentang eksekusi pernyataan SQL dalam database Lakebase Postgres Anda. Ini melacak informasi seperti jumlah eksekusi, total dan waktu eksekusi rata-rata, dan banyak lagi, membantu Anda menganalisis dan mengoptimalkan performa kueri SQL.

Kapan menggunakan pg_stat_statements

Gunakan pg_stat_statements saat Anda membutuhkan:

  • Statistik eksekusi kueri terperinci dan metrik kinerja
  • Identifikasi kueri yang lambat atau sering dijalankan
  • Analisis kinerja kueri dan wawasan pengoptimalan
  • Analisis beban kerja database dan perencanaan kapasitas
  • Integrasi dengan alat dan dasbor pemantauan kustom

Mengaktifkan pg_stat_statements

pg_stat_statements Ekstensi ini tersedia di Lakebase Postgres. Untuk mengaktifkannya:

  1. Sambungkan ke database Anda menggunakan editor SQL atau klien Postgres.

  2. Jalankan perintah SQL berikut untuk membuat ekstensi:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. Ekstensi mulai mengumpulkan statistik segera setelah pembuatan.

Persistensi data

Statistik yang dikumpulkan oleh pg_stat_statements ekstensi disimpan dalam memori dan tidak dipertahankan saat komputasi Lakebase Anda ditangguhkan atau dimulai ulang. Misalnya, jika komputasi Anda menurun karena tidak aktif, statistik yang ada akan hilang. Statistik baru dikumpulkan setelah komputasi Anda dimulai ulang.

Perilaku ini berarti bahwa:

  • Reset statistik setelah komputer dimulai ulang atau ditangguhkan
  • Analisis performa jangka panjang memerlukan ketersediaan komputasi yang konsisten
  • Anda mungkin ingin mengekspor statistik penting sebelum pemeliharaan terencana atau memulai ulang

Nota

Pertimbangkan untuk menjalankan kueri pemantauan Anda secara teratur dan menyimpan hasil secara eksternal jika Anda memerlukan data performa historis di seluruh peristiwa siklus hidup komputasi.

Pelajari lebih lanjut: Ekstensi Postgres

Statistik pelaksanaan kueri

Setelah mengaktifkan ekstensi, Anda dapat melakukan kueri statistik eksekusi menggunakan tampilan pg_stat_statements. Tampilan ini berisi satu baris per kueri database yang berbeda, memperlihatkan berbagai statistik:

SELECT * FROM pg_stat_statements LIMIT 10;

Tampilan berisi detail seperti:

ID pengguna dbid queryid kueri panggilan
16391 16384 -9047282044438606287 SELECT * DARI pengguna; 10

Untuk daftar lengkap kolom dan deskripsi, lihat dokumentasi PostgreSQL.

Kueri pemantauan utama

Gunakan kueri ini untuk menganalisis performa database Anda:

Menemukan query paling lambat

Kueri ini mengidentifikasi kueri dengan waktu eksekusi rata-rata tertinggi, yang dapat menunjukkan kueri yang tidak efisien yang memerlukan pengoptimalan:

SELECT
    query,
    calls,
    total_exec_time,
    mean_exec_time,
    (total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Menemukan kueri yang paling sering dijalankan

Kueri yang paling sering dijalankan sering kali merupakan jalur penting dan kandidat pengoptimalan. Kueri ini mencakup rasio hit cache untuk membantu mengidentifikasi kueri yang mungkin mendapat manfaat dari pengindeksan yang lebih baik:

SELECT
    query,
    calls,
    total_exec_time,
    rows,
    100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Temukan kueri dengan I/O tertinggi

Kueri ini mengidentifikasi kueri yang melakukan operasi I/O disk terbanyak, yang dapat memengaruhi performa database secara keseluruhan:

SELECT
    query,
    calls,
    shared_blks_read + shared_blks_written AS total_io,
    shared_blks_read,
    shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Menemukan kueri yang paling memakan waktu

Kueri ini mengidentifikasi kueri yang menggunakan total waktu eksekusi terbanyak di semua eksekusi:

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

Temukan kueri yang mengembalikan banyak baris

Kueri ini mengidentifikasi kueri yang mengembalikan kumpulan hasil besar, yang mungkin mendapat manfaat dari penomoran halaman atau pemfilteran:

SELECT
    query,
    calls,
    rows,
    (rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Reset statistik

Untuk mengatur ulang statistik yang dikumpulkan oleh pg_stat_statements:

Nota

Hanya databricks_superuser peran yang memiliki hak istimewa yang diperlukan untuk menjalankan fungsi ini. Peran default yang dibuat dengan proyek Lakebase dan peran yang dibuat di Aplikasi Lakebase diberikan keanggotaan dalam peran databricks_superuser.

SELECT pg_stat_statements_reset();

Fungsi ini menghapus semua akumulasi data statistik, seperti waktu dan jumlah eksekusi untuk pernyataan SQL, dan mulai mengumpulkan data baru. Ini sangat berguna ketika Anda ingin memulai dari awal dalam mengumpulkan statistik performa.

Sumber daya

Pelajari selengkapnya: Dokumentasi PostgreSQL