Dapatkan statistik kueri berjalan lambat

10

Aplikasi basis data saya menjalankan banyak kueri yang berbeda. Saya telah menetapkan log_min_duration_statementke 1000. Tapi query login tidak selalu lambat, kebanyakan kali mereka hanya membutuhkan beberapa ms.

Apakah mungkin untuk mendapatkan statistik dari semua pertanyaan, dan seberapa sering mereka membutuhkan waktu lebih dari 1000 ms?

pengguna2047809
sumber
1
Lihat apakah itu membantu: pengaturan log_min_duration_statement diabaikan . Atau Anda lupa memuat ulang konfigurasi setelah mengubah pengaturan.
Daniel Vérité

Jawaban:

11

Instal ekstensi pg_stat_statements dengan perintah SQL

CREATE EXTENSION pg_stat_statements

Anda mungkin ingin memastikan bahwa Anda membuat ini dengan menggunakan pengguna yang sesuai (seperti pengguna yang digunakan aplikasi Anda atau beberapa akun dba). Ketahuilah bahwa pengguna mana pun yang membuat ekstensi juga akan memilikinya.

Ini akan membutuhkan server restart agar dapat digunakan (karena Anda harus mengubah konfigurasi di postgresql.conf sedikit yang mempengaruhi konsumsi memori), tetapi itu akan memberi Anda statistik pada semua pertanyaan.

Silakan lihat halaman dokumentasi untuk informasi lebih lanjut tentang apa yang pg_stat_statements sediakan. Lihat di sini untuk referensi cepat tentang konfigurasi file konfigurasi postgresql.conf untuk pg_stat_statements.

Setelah Anda menginstal dan menjalankannya, Anda dapat melihat statistik dengan menanyakan tampilan pg_stat_statements ..

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..
Joishi Bodio
sumber
2

Bagaimana @JoishiBodio mengatakan Anda dapat menggunakan pg_stat_statementsekstensi untuk melihat statistik kueri lambat. Bagi mereka yang berjuang dengan instalasi (seperti yang saya lakukan):

  1. Periksa apakah pg_stat_statementsada dalam daftar ekstensi yang tersedia:

    SELECT * FROM pg_available_extensions;
  2. Coba instal postgresql-contribpaket melalui manajer paket sistem Anda, di Debian / Ubuntu:

    sudo apt-get install postgresql-contrib-9.5

Kemudian lakukan langkah 1 lagi.

  1. Tambahkan pg_stat_statementske shared_preload_librariesdalam konfigurasi PostgreSQL:

melalui postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

via argumen baris perintah (tanpa tanda kutip!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Kemudian buat ekstensi dalam database:

    CREATE EXTENSION pg_stat_statements;
Andrey Semakin
sumber