PostgreSQL riwayat sesi aktif - ekstensi pgsentinel baru

Pgsentinel telah merilis ekstensi pgsentinel dengan nama yang sama ( repositori github ), yang menambahkan tampilan pg_active_session_history ke PostgreSQL - sejarah sesi aktif (mirip dengan Oracle v $ active_session_history).

Sebenarnya, ini hanya snapshot setiap detik dari pg_stat_activity, tetapi ada beberapa poin penting:

  1. Semua informasi yang terakumulasi disimpan hanya dalam RAM, dan jumlah memori yang dikonsumsi diatur oleh jumlah catatan yang disimpan terakhir.
  2. Kolom queryid ditambahkan - queryid yang sama dari ekstensi pg_stat_statements (diperlukan instalasi awal).
  3. Bidang top_level_query ditambahkan - teks kueri dari mana permintaan saat ini dipanggil (jika menggunakan pl / pgsql)

Daftar lengkap bidang pg_active_session_history:
       Kolom |  Ketik ------------------ + -------------------------- ash_time |  timestamp dengan zona waktu datid |  oid datname |  teks pid |  integer usesysid |  nama pengguna oid |  text application_name |  text client_addr |  teks client_hostname |  teks client_port |  integer backend_start |  timestamp dengan zona waktu xact_start |  timestamp dengan zona waktu query_start |  cap waktu dengan zona waktu state_change |  timestamp dengan zona waktu wait_event_type |  teks wait_event |  status teks |  teks backend_xid |  xid backend_xmin |  xid top_level_query |  permintaan teks |  permintaan teks |  bigint backend_type |  teks 


Belum ada paket siap pakai untuk instalasi. Diusulkan untuk mengunduh sumber dan membangun perpustakaan sendiri. Pertama, Anda perlu menginstal paket "devel" untuk server Anda dan menulis path ke pg_config dalam variabel PATH. Kami mengumpulkan:
cd pgsentinel / src
membuat
buat instal

Tambahkan parameter ke postgres.conf:
shared_preload_libraries = 'pg_stat_statements, pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = semua

# Jumlah entri terbaru yang disimpan dalam memori
pgsentinel_ash.max_entries = 10000

Reboot PostgreSQL dan buat ekstensi:
membuat pgsentinel ekstensi;

Akumulasi informasi memungkinkan Anda untuk menjawab pertanyaan seperti:

  • Apa harapan sesi menghabiskan paling banyak waktu?
  • Sesi mana yang paling aktif?
  • Pertanyaan mana yang paling aktif?

Anda dapat memperoleh jawaban atas pertanyaan-pertanyaan ini, tentu saja, dengan kueri SQL, tetapi lebih mudah untuk melihatnya dengan jelas pada grafik, menyoroti interval waktu dengan mouse Anda. Anda dapat melakukan ini menggunakan program PASH-Viewer gratis (Anda dapat mengunduh binari yang dikumpulkan di bagian Pers ).

Pada awal, PASH-Viewer (mulai dari versi 0.4.0) memeriksa keberadaan tampilan pg_active_session_history dan, jika ada, itu memuat seluruh akumulasi sejarah dari itu dan terus membaca data yang masuk baru, memperbarui jadwal setiap 15 detik.

gambar

Source: https://habr.com/ru/post/id416909/


All Articles