Yavaş çalışan sorguların istatistiklerini alma


10

Veritabanı uygulamam birçok farklı sorgu çalıştırıyor. log_min_duration_statement1000'e ayarladım . Ama orada kaydedilen sorgular her zaman yavaş değildir, çoğu zaman sadece birkaç ms alırlar.

Tüm sorguların istatistiklerini almak mümkün mü ve ne kadar sıklıkla 1000ms'den uzun sürdüler?


1
Bunun işe yarayıp yaramadığına bakın: log_min_duration_statement ayarı yok sayılır . Veya ayarı değiştirdikten sonra yapılandırmayı yeniden yüklemeyi unuttunuz.
Daniel Vérité

Yanıtlar:


11

Pg_stat_statements uzantısını SQL komutuyla yükleyin

CREATE EXTENSION pg_stat_statements

Bunu, uygun bir kullanıcı (uygulamanızın kullandığı kullanıcı veya bazı dba hesapları gibi) kullanarak oluşturduğunuzdan emin olmak isteyebilirsiniz. Hangi kullanıcı uzantıyı oluşturursa uzantıya sahip olacağını unutmayın.

Bu, kullanılabilir olması için sunucunun yeniden başlatılmasını gerektirir (çünkü postgresql.conf içindeki yapılandırmayı bellek tüketimini etkileyen küçük bir bit değiştirmeniz gerekir), ancak tüm sorgularda istatistik verir.

Pg_stat_statements'ın sağladığı bilgiler hakkında daha fazla bilgi için lütfen belgeler sayfasına bakın . Pg_stat_statements için postgresql.conf yapılandırma dosyasının yapılandırmasıyla ilgili hızlı başvuru için buraya bakın .

Yükledikten ve çalıştırdıktan sonra, pg_stat_statements görünümünü sorgulayarak istatistikleri görüntüleyebilirsiniz.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

@JoishiBodio, pg_stat_statementsyavaş sorgu istatistiklerini görmek için uzantıyı kullanabileceğinizi nasıl söyledi . Kurulumla mücadele edenler için (yaptığım gibi):

  1. pg_stat_statementsKullanılabilir uzantılar listesinde olup olmadığını kontrol edin :

    SELECT * FROM pg_available_extensions;
  2. postgresql-contribPaketi Debian / Ubuntu üzerinde sistem paket yöneticiniz aracılığıyla kurmayı deneyin :

    sudo apt-get install postgresql-contrib-9.5

Sonra tekrar 1. adımı uygulayın.

  1. Ekle pg_stat_statementsiçin shared_preload_librariesPostgreSQL konfigürasyonda:

yoluyla postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

komut satırı bağımsız değişkenleri aracılığıyla (tırnak işareti yok!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. Sonra bir veritabanında uzantı oluşturun:

    CREATE EXTENSION pg_stat_statements;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.