PostgreSQL PG14, libpq aracılığıyla günlüğe kaydetmeyi geliştiriyor

Güncelleme: 2 Temmuz 2023

PostgreSQL 14, libpq ile günlüğe kaydetmeyi geliştiriyor

PG14'te libpq işlevi, uygulama sunucusu/istemci iletişiminin kullanılabilirliğini izlemek için geliştirildi. Çıkış formatını kontrol etmek için yeni seçenekler ekler.

arka fon

libpq istemci kitaplıklarından biridir; kullanıcılar istemci-sunucu iletişimini kaydetmek için PQtrace işlevini çalıştırabilir. Bu iletişim, PG tarafından kullanılan bir tür protokol bilgisidir ve şunları içerir: mesaj tipinin tanımlayıcısı, mesajın uzunluğu ve değişim bilgilerinin mesaj içeriği.

Uygulama geliştiricileri, iletişimin beklendiği gibi performans gösterip göstermediğini belirlemek için bu günlüğü kullanabilir. Örnek olarak aşağıdaki ifadeyi kullanın:

CREATE TABLESPACE gerilemesi_tblspacewith

KONUM '/ev/postgres/src/test/regress/testtablespace'

(rastgele_sayfa_maliyet = 3.0);

PG13'te PQtrace'i çağıran uygulama, belirtilen dosyaya aşağıdaki günlük türlerinin çıktısını verecektir:

PG13'te libpq tarafından oluşturulan günlükler

Geçerli PG sürümünün PQtrace günlük çıktısının bir zaman damgası içermediğine, dolayısıyla yavaş sorguları analiz etmek için referans olarak kullanılamayacağına dikkat edilmelidir. Ayrıca mesaj tanımlayıcı, sunucu/istemci mesaj uzunluğu ve çıktı içeriği ayrı bir satırda olduğundan güvenilirlik nispeten düşüktür ve protokol mesajlarının analizi daha zordur. 1 ile işaretlenen Z ve C, protokol mesajının tanımlayıcılarıdır. Her tanımlayıcının anlamını anlamak için kılavuzun Mesaj Formatları bölümüne bakın.

Özellik iyileştirmelerine genel bakış

PG14'te PQtrace işlevi, çıkış günlüğünü daha okunabilir hale getirmek ve bir zaman damgası eklemek için geliştirildi. Zaman damgasının çıktısını kontrol etmek için yeni bir PQsetTraceFlags işlevi eklendi.

Günlük çıktısını iyileştirin

PG14'teki geliştirilmiş izleme işlevi aşağıdakine benzer çıktılar üretir:

PG 14'te libpq tarafından oluşturulan günlükler

1) Zaman damgası içerir

2) Mesaj yönünün kodu daha sezgiseldir: F ön uç, B arka uç anlamına gelir

3) Protokol mesajının tanımlayıcısı yerine resmi mesaj adının çıktısını alın

4) Anlamlı protokol mesajları tek satırda görüntülenir

Günlük alma yöntemi

Daha önce olduğu gibi, libpq'nin PQtrace işlevini çağırarak günlüğe kaydetmeye başlayın. Zaman damgasının çıktısını almanız gerekmiyorsa bunu PQsetTraceFlags işlevi aracılığıyla kontrol edebilirsiniz.

Etkilemek

PQtrace, kullanıcıların yavaş sorguları tanımlamasına yardımcı olabilecek zaman damgaları üretir. Uygulama aniden yavaşlarsa, sunucunun mu yoksa istemcinin mi daha uzun sürdüğünü belirlemek için günlükteki zaman damgası farkını kontrol edebilirsiniz. Önemli protokol mesajları tek satırda yayınlanır, böylece lipq loglarına aşina olmayan kişiler sunucu ile istemci arasında gönderilen iletişimi kolayca anlayabilir. Zaman damgasının çıktısının alınıp alınmayacağını kontrol etmek için PQsetTraceFlags işlevini kullanarak bu günlüğü regresyon testi için kullanabilirsiniz. Zaman damgası çıkarmayarak günlüğü beklenen test çalıştırmasının sonuçlarıyla doldurabilir ve bunu test çalıştırması sırasında elde edilen günlükle kolayca karşılaştırabilirsiniz.

gelecek

PG14'ün libpq günlüğü zaman damgaları ve daha okunabilir metinler içerecektir. Sonraki sürümlerde kullanılabilirliği aşağıdaki yönlerden daha da geliştireceğiz:

1) Geçerli işlev, günlüğü PQtrace işlevine atanan dosyaya yazar. Bazı durumlarda günlük dosyası çok genişler ve bu da dosyanın çalışmasını etkiler. Bu sorunu çözmek için dosyanın maksimum boyutunu belirleyen bir işlev sağlamayı umuyoruz.

2) Günlük çıktısının dizin konumunu ve günlük dosyası adını, uygulamayı değiştirmeden ortama uyum sağlayacak şekilde ayarlamak için ortam değişkenleri ve bağlantı parametreleri eklemeyi umuyorum.

  Bağlantılar:

lq9p16e

nl8060bc3117e