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 dbid
yang dapat Anda peroleh dari pg_database
nama 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.