PostgreSQL PG14 menambah baik pengelogan melalui libpq

Kemas kini: 2 Julai 2023

PostgreSQL 14 menambah baik pembalakan dengan libpq

Fungsi libpq telah dipertingkatkan dalam PG14 untuk menjejaki ketersediaan komunikasi pelayan/pelanggan aplikasi. Ia menambah pilihan baharu untuk mengawal format output.

latar belakang

libpq adalah salah satu perpustakaan pelanggan, pengguna boleh menjalankan fungsi PQtrace untuk merekod komunikasi pelanggan-pelayan. Komunikasi ini ialah sejenis maklumat protokol yang digunakan oleh PG, termasuk: pengecam jenis mesej, panjang mesej dan kandungan mesej maklumat pertukaran.

Pembangun aplikasi boleh menggunakan log ini untuk menentukan sama ada komunikasi berfungsi seperti yang diharapkan. Gunakan pernyataan berikut sebagai contoh:

CIPTA RUANG MEJA regresi_tblspacedengan

LOKASI '/rumah/postgres/src/ujian/regres/ruang meja ujian'

DENGAN (rawak_halaman_kos = 3);

Aplikasi yang memanggil PQtrace dalam PG13 akan mengeluarkan jenis log berikut kepada fail yang ditentukan:

Log dijana oleh libpq dalam PG13

Perlu diingatkan bahawa output log PQtrace versi PG semasa tidak mengandungi cap waktu, jadi ia tidak boleh digunakan sebagai rujukan untuk menganalisis pertanyaan perlahan. Di samping itu, kerana pengecam mesej, panjang mesej pelayan/pelanggan dan kandungan output berada pada baris yang berasingan, kebolehpercayaan agak rendah dan analisis mesej protokol adalah lebih sukar. Z dan C bertanda 1 ialah pengecam mesej protokol. Untuk memahami maksud setiap pengecam, rujuk bahagian Format Mesej dalam manual

Gambaran keseluruhan penambahbaikan ciri

Dalam PG14, fungsi PQtrace telah dipertingkatkan untuk menjadikan log keluaran lebih mudah dibaca dan menyertakan cap masa. Fungsi baharu PQsetTraceFlags telah ditambah untuk mengawal output cap masa.

Meningkatkan output log

Fungsi surih yang dipertingkatkan dalam PG14 menghasilkan output yang serupa dengan yang berikut:

Log dijana oleh libpq dalam PG 14

1) Mengandungi cap masa

2) Kod arah mesej adalah lebih intuitif: F bermaksud hujung hadapan, B bermaksud hujung belakang

3) Keluarkan nama mesej rasmi dan bukannya pengecam mesej protokol

4) Mesej protokol yang bermakna dikeluarkan dalam satu baris

Kaedah mendapatkan semula log

Seperti sebelum ini, mulakan log dengan memanggil fungsi PQtrace libpq. Jika anda tidak perlu mengeluarkan cap masa, anda boleh mengawalnya melalui fungsi PQsetTraceFlags.

Pengaruh

PQtrace mengeluarkan cap masa, yang boleh membantu pengguna mengenal pasti pertanyaan perlahan. Jika aplikasi tiba-tiba menjadi perlahan, anda boleh menyemak perbezaan cap masa dalam log untuk menentukan sama ada pelayan atau klien mengambil masa yang lebih lama. Mesej protokol yang penting dikeluarkan dalam satu baris, supaya orang yang tidak biasa dengan log lipq dapat dengan mudah memahami komunikasi yang dihantar antara pelayan dan pelanggan. Dengan menggunakan fungsi PQsetTraceFlags untuk mengawal sama ada untuk mengeluarkan cap masa, anda boleh menggunakan log ini untuk ujian regresi. Dengan tidak mengeluarkan cap masa, anda boleh mengisi log dengan hasil ujian yang dijangkakan dan membandingkannya dengan mudah dengan log yang diperoleh semasa ujian dijalankan.

masa depan

Log libpq PG14 akan mengandungi setem masa dan lebih banyak teks yang boleh dibaca. Dalam versi seterusnya, kami akan meningkatkan lagi kebolehgunaan dalam aspek berikut:

1) Fungsi semasa menulis log ke fail yang diberikan kepada fungsi PQtrace. Dalam sesetengah kes, fail log akan berkembang dengan sangat besar, sekali gus menjejaskan operasi fail. Untuk menyelesaikan masalah ini, kami berharap dapat menyediakan fungsi untuk menentukan saiz maksimum fail.

2) Saya berharap untuk menambah pembolehubah persekitaran dan parameter sambungan untuk menetapkan lokasi direktori output log dan nama fail log untuk menyesuaikan diri dengan persekitaran tanpa mengubah suai aplikasi.

  Links:

lq9p16e

nl8060bc3117e