Cara memeriksa / mengetahui kueri menjalankan tertinggi


9

Saya ingin mengumpulkan statistik tentang kueri menjalankan tertinggi di database saya.

Untuk itu saya perlu tahu bagaimana saya bisa melacak permintaan sehingga saya bisa membuat tampilan atau tampilan terwujud untuk men-cache hasil permintaan pencarian tertinggi karena saya memiliki DB besar.


1
Sudahkah Anda memeriksanya di sini ?
Nelz


Karena penasaran, seberapa besar itu besar? Juga, dengan 'menjalankan tertinggi' maksud Anda kueri paling sering berjalan atau kumulatif paling mahal? Dan, dengan tampilan sederhana, Anda tidak menyayangkan apa pun dalam hal ini.
dezso

@ dezso: 300k baris di meja utama. Yang paling mahal akan menjadi prioritas tetapi saya juga ingin tahu yang paling sering dijalankan.
mamesaye

Seperti @a_horse_with_no_name sudah mengatakan .. ekstensi pg_stat_statements mungkin adalah yang Anda butuhkan.
Joishi Bodio

Jawaban:


8

Seperti yang dikatakan seseorang di komentar, pg_stat_statements adalah cara untuk mendapatkan statistik. Masukkan ini ke Anda postgresql.conf:

shared_preload_libraries = 'pg_stat_statements'

pg_stat_statements.max = 10000
pg_stat_statements.track = all

Kemudian jalankan kueri ini:

CREATE EXTENSION pg_stat_statements; 

Setelah itu, kueri sampel ini (disalin dari dokumen yang ditautkan di atas) akan memberi Anda statistik untuk 5 kueri teratas dari semua database :

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

Jika Anda ingin hasil untuk satu basis data , Anda perlu memfilter dbidyang dapat Anda peroleh dari pg_databasenama db. Tambahkan klausa WHERE ini ke permintaan di atas:

WHERE dbid = (select oid from pg_database where datname = 'YOUR_DB_NAME')

Anda juga bisa bergabung.

Saat Anda menguji ini, mungkin ide yang bagus untuk mengecualikan kueri ke tabel statistik / skema sendiri, misalnya:

AND query not similar to '%( pg_|information_schema)%'

Ada banyak alat komersial dan gratis yang dapat membantu Anda memvisualisasikan data.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.