PostgreSQL PG14 meningkatkan logging melalui libpq

Pembaruan: 2 Juli 2023

PostgreSQL 14 meningkatkan logging dengan libpq

Fungsi libpq telah ditingkatkan di PG14 untuk melacak ketersediaan komunikasi server/klien aplikasi. Itu menambahkan opsi baru untuk mengontrol format output.

latar belakang

libpq adalah salah satu perpustakaan klien, pengguna dapat menjalankan fungsi PQtrace untuk merekam komunikasi klien-server. Komunikasi ini merupakan jenis protokol informasi yang digunakan oleh PG, meliputi: pengidentifikasi jenis pesan, panjang pesan, dan isi pesan dari pertukaran informasi.

Pengembang aplikasi dapat menggunakan log ini untuk menentukan apakah komunikasi berjalan seperti yang diharapkan. Gunakan pernyataan berikut sebagai contoh:

BUAT kemunduran TABLESPACE_tblspacewith

LOKASI home/postgres/src/test/regress/testtablespace'

DENGAN halaman acakbiaya 3.0);

Aplikasi yang memanggil PQtrace di PG13 akan menampilkan jenis log berikut ke file yang ditentukan:

Log yang dihasilkan oleh libpq di PG13

Perlu dicatat bahwa output log PQtrace dari versi PG saat ini tidak berisi stempel waktu, sehingga tidak dapat digunakan sebagai referensi untuk menganalisis kueri yang lambat. Selain itu, karena pengidentifikasi pesan, panjang pesan server/klien, dan konten keluaran berada pada jalur terpisah, keandalannya relatif rendah, dan analisis pesan protokol lebih sulit. Z dan C bertanda 1 adalah pengidentifikasi dari pesan protokol. Untuk memahami arti dari setiap pengidentifikasi, lihat bagian Format Pesan dari manual

Ikhtisar peningkatan fitur

Di PG14, fungsi PQtrace telah ditingkatkan untuk membuat log keluaran lebih mudah dibaca dan menyertakan cap waktu. Fungsi baru PQsetTraceFlags telah ditambahkan untuk mengontrol keluaran stempel waktu.

Tingkatkan keluaran log

Fungsi jejak yang ditingkatkan di PG14 menghasilkan output yang mirip dengan yang berikut:

Log yang dihasilkan oleh libpq di PG 14

1) Berisi stempel waktu

2) Kode arah pesan lebih intuitif: F berarti ujung depan, B berarti ujung belakang

3) Keluarkan nama pesan resmi alih-alih pengidentifikasi pesan protokol

4) Pesan protokol yang berarti dikeluarkan dalam satu baris

Metode pengambilan log

Seperti sebelumnya, mulai logging dengan memanggil fungsi PQtrace libpq. Jika Anda tidak perlu menampilkan stempel waktu, Anda dapat mengontrolnya melalui fungsi PQsetTraceFlags.

Mempengaruhi

PQtrace mengeluarkan cap waktu, yang dapat membantu pengguna mengidentifikasi kueri yang lambat. Jika aplikasi tiba-tiba melambat, Anda dapat memeriksa perbedaan stempel waktu di log untuk menentukan apakah server atau klien membutuhkan waktu lebih lama. Pesan protokol yang signifikan dikeluarkan dalam satu baris, sehingga orang yang tidak terbiasa dengan log lipq dapat dengan mudah memahami komunikasi yang dikirim antara server dan klien. Dengan menggunakan fungsi PQsetTraceFlags untuk mengontrol apakah akan menampilkan stempel waktu, Anda dapat menggunakan log ini untuk pengujian regresi. Dengan tidak mengeluarkan stempel waktu, Anda dapat mengisi log dengan hasil uji coba yang diharapkan dan dengan mudah membandingkannya dengan log yang diperoleh selama uji coba.

masa depan

Log libpq PG14 akan berisi stempel waktu dan teks yang lebih mudah dibaca. Dalam versi berikutnya, kami akan lebih meningkatkan kegunaan dalam aspek berikut:

1) Fungsi saat ini menulis log ke file yang ditetapkan ke fungsi PQtrace. Dalam beberapa kasus, file log akan berkembang sangat besar, sehingga mempengaruhi operasi file. Untuk mengatasi masalah ini, kami berharap dapat menyediakan fungsi untuk menentukan ukuran maksimum file.

2) Saya berharap untuk menambahkan variabel lingkungan dan parameter koneksi untuk mengatur lokasi direktori dari output log dan nama file log untuk beradaptasi dengan lingkungan tanpa memodifikasi aplikasi.

  Link:

lq9p16e

nl8060bc3117e