pg_stat_statements ile izleme

pg_stat_statements , Lakebase Postgres veritabanınızda SQL deyimi yürütmesinin ayrıntılı istatistiksel görünümünü sağlayan bir Postgres uzantısıdır. Yürütme sayıları, toplam ve ortalama yürütme süreleri ve daha fazlası gibi bilgileri izler ve SQL sorgu performansını analiz edip iyileştirmenize yardımcı olur.

pg_stat_statements ne zaman kullanılır?

İhtiyacınız olduğunda kullanın pg_stat_statements :

  • Ayrıntılı sorgu yürütme istatistikleri ve performans ölçümleri
  • Yavaş veya sık yürütülen sorguların tanımlanması
  • Sorgu performansı analizi ve iyileştirme içgörüleri
  • Veritabanı iş yükü analizi ve kapasite planlaması
  • Özel izleme araçları ve panolarıyla entegrasyon

pg_stat_statements etkinleştirme

Uzantı Lakebase pg_stat_statements Postgres'te kullanılabilir. Bunu etkinleştirmek için:

  1. SQL düzenleyicisini veya Postgres istemcisini kullanarak veritabanınıza bağlanın.

  2. Uzantıyı oluşturmak için aşağıdaki SQL komutunu çalıştırın:

    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
    
  3. Uzantı, oluşturulduktan hemen sonra istatistik toplamaya başlar.

Veri kalıcılığı

Uzantı tarafından pg_stat_statements toplanan istatistikler bellekte depolanır ve Lakebase işleminiz askıya alındığında veya yeniden başlatıldığında korunmaz. Örneğin, hesaplama kaynaklarınız etkinlik dışı kalma nedeniyle azaltılırsa, tüm mevcut istatistikler kaybolur. İşleminiz yeniden başlatıldıktan sonra yeni istatistikler toplanır.

Bu davranış şu anlama gelir:

  • İşlem yeniden başlatıldıktan veya askıya alındıktan sonra istatistikler sıfırlandı
  • Uzun süre çalışan performans analizi tutarlı işlem kullanılabilirliği gerektirir
  • Planlı bakım veya yeniden başlatmalardan önce önemli istatistikleri dışarı aktarmak isteyebilirsiniz

Uyarı

İşlem yaşam döngüsü olaylarının geçmiş performans verilerine ihtiyacınız varsa, izleme sorgularınızı düzenli olarak çalıştırmayı ve sonuçları dışarıdan depolamayı göz önünde bulundurun.

Daha fazla bilgi edinin: Postgres uzantıları

Sorgu yürütme istatistikleri

Uzantıyı etkinleştirdikten sonra, görünümü kullanarak yürütme istatistiklerini pg_stat_statements sorgulayabilirsiniz. Bu görünüm, farklı veritabanı sorgusu başına çeşitli istatistikleri gösteren bir satır içerir:

SELECT * FROM pg_stat_statements LIMIT 10;

Görünümde aşağıdakiler gibi ayrıntılar bulunur:

kullanıcı kimliği dbid queryid soru Aramalar
16391 16384 -9047282044438606287 SELECT * FROM kullanıcıları; 10

Sütunların ve açıklamaların tam listesi için PostgreSQL belgelerine bakın.

Anahtar izleme sorguları

Veritabanınızın performansını analiz etmek için şu sorguları kullanın:

En yavaş sorguları bulma

Bu sorgu, en yüksek ortalama yürütme süresine sahip sorguları tanımlar ve bu da iyileştirme gerektiren verimsiz sorguları gösterebilir:

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;

En sık yürütülen sorguları bulma

En sık yürütülen sorgular genellikle kritik yollar ve iyileştirme adaylarıdır. Bu sorgu, daha iyi dizin oluşturmadan yararlanabilecek sorguları tanımlamaya yardımcı olmak için önbellek isabet oranlarını içerir:

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;

En yüksek G/Ç'ye sahip sorguları bulma

Bu sorgu, genel veritabanı performansını etkileyebilecek en fazla disk G/Ç işlemi gerçekleştiren sorguları tanımlar:

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;

En çok zaman alan sorguları bulma

Bu sorgu, tüm çalıştırmalarda en fazla toplam yürütme süresini tüketen sorguları tanımlar:

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

Çok satır döndüren sorguları bulma

Bu sorgu, sayfalandırma veya filtrelemeden yararlanabilecek büyük sonuç kümeleri döndüren sorguları tanımlar:

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

İstatistikleri sıfırla

tarafından pg_stat_statementstoplanan istatistikleri sıfırlamak için:

Uyarı

Yalnızca databricks_superuser rollerin bu işlevi yürütmek için gerekli ayrıcalığı vardır. Lakebase projesiyle oluşturulan varsayılan role, databricks_superuser rolüne üyelik verilir. Lakebase Uygulamasında oluşturulan rollere isteğe bağlı olarak bu üyelik verilebilir.

SELECT pg_stat_statements_reset();

Bu işlev, yürütme süreleri ve SQL deyimleri için sayımlar gibi birikmiş tüm istatistiksel verileri temizler ve yeni veri toplamaya başlar. Özellikle performans istatistikleri toplamaya yeni bir başlangıç yapmak istediğinizde kullanışlıdır.

Kaynaklar

Daha fazla bilgi edinin: PostgreSQL belgeleri