Bagaimana cara mendaftar koneksi aktif di PostgreSQL?

150

Apakah ada perintah di PostgreSQL untuk memilih koneksi aktif ke database yang diberikan?

psqlmenyatakan bahwa saya tidak dapat menghapus salah satu basis data saya karena ada koneksi aktif , jadi saya ingin melihat apa koneksi itu (dan dari mesin mana)

Tregoreg
sumber
Bagus! saya mencari (buruk) dan tidak menemukan apa pun. Bisakah saya melakukan sesuatu untuk menutup koneksi idle orang lain?
Pembicara

Jawaban:

262

Oh, saya baru saja menemukan perintah itu di forum PostgreSQL:

SELECT * FROM pg_stat_activity;
Tregoreg
sumber
14
Jika Anda ingin membatasi hanya satu database, Anda dapat menggunakan SELECT * FROM pg_stat_activity WHERE datname = 'dbname';
user2182349
1
Bagaimana saya bisa mendapatkan koneksi database aktif dari layanan yang didukung spesifik?
GunasekaranR
Dan bagaimana setelah menjalankan pg_terminate_backenddan aplikasi saya masih dapat menjalankan permintaan terhadap db tapi saya tidak bisa melihat koneksi baru di pg_Stat_activity?
takacsot
37

Mengikuti akan memberi Anda koneksi / pertanyaan aktif dalam postgres DB-

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query
    ,state
FROM pg_stat_activity
WHERE state = 'active';

Anda dapat menggunakan 'idle' daripada aktif untuk mendapatkan koneksi / permintaan yang sudah dieksekusi.

Neeraj Bansal
sumber
1
Apakah idle berarti koneksi aktif? Jika saya melepaskan koneksi, apakah masih akan terdaftar sebagai idle?
Shivam Kubde
1
Ya @ShivamKubde tetapi sebagai 'idle', dan permintaan di atas hanya menunjukkan koneksi 'aktif', jadi hapus WHERE ...klausa dan untuk dapat melihat koneksi apa yang aktif atau menganggur tambahkan kolom stateke SELECTklausa
Mariano Ruiz
6
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

Karena pg_stat_activityberisi statistik koneksi semua basis data yang memiliki status apa pun, salah satu idleatau active, nama basis data dan status koneksi harus dimasukkan dalam kueri untuk mendapatkan hasil yang diinginkan.

Abdollah
sumber