จะแสดงรายการการเชื่อมต่อที่ใช้งานบน PostgreSQL ได้อย่างไร


150

มีคำสั่งใน PostgreSQL เพื่อเลือกการเชื่อมต่อที่ใช้งานกับฐานข้อมูลที่กำหนดหรือไม่?

psqlระบุว่าฉันไม่สามารถวางฐานข้อมูลใดฐานหนึ่งของฉันได้เนื่องจากมีการเชื่อมต่อที่ใช้งานอยู่ดังนั้นฉันจึงต้องการดูว่าการเชื่อมต่อนั้นคืออะไร (และจากเครื่องใด)



ที่ดี! ฉันค้นหา (ไม่ดี) และไม่พบอะไรเลย ฉันสามารถทำบางอย่างเพื่อปิดการเชื่อมต่อที่ไม่ได้ใช้งานของผู้อื่นได้หรือไม่?
ลำโพง

คำตอบ:


264

โอ้ฉันเพิ่งพบคำสั่งนั้นในฟอรัม PostgreSQL:

SELECT * FROM pg_stat_activity;

14
หากคุณต้องการ จำกัด เพียงฐานข้อมูลเดียวคุณสามารถใช้SELECT * จาก pg_stat_activity WHERE datname = 'dbname';
user2182349

1
ฉันจะรับการเชื่อมต่อฐานข้อมูลที่ใช้งานอยู่จากบริการที่สำรองไว้ได้อย่างไร
GunasekaranR

หลังจากทำงานpg_terminate_backendแล้วแอพของฉันยังสามารถเรียกใช้คิวรีกับฐานข้อมูลได้ แต่ฉันไม่เห็นการเชื่อมต่อใหม่ใน pg_Stat_activity
takacsot

38

การติดตามจะให้การเชื่อมต่อ / การสืบค้นที่ใช้งานคุณใน 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';

คุณสามารถใช้ 'ไม่ได้ใช้งาน' แทนการใช้งานเพื่อรับการเชื่อมต่อ / แบบสอบถามที่ดำเนินการแล้ว


1
ว่างหมายถึงการเชื่อมต่อใช้งานอยู่หรือไม่ หากฉันปล่อยการเชื่อมต่อจะยังคงแสดงเป็นไม่ได้ใช้งานหรือไม่
Shivam Kubde

1
ใช่ @ShivamKubde แต่เป็น 'ไม่ได้ใช้งาน' และแบบสอบถามด้านบนแสดงเฉพาะการเชื่อมต่อ 'ที่ใช้งาน' ดังนั้นให้ลบWHERE ...คำสั่งและเพื่อให้สามารถดูว่าการเชื่อมต่อใดที่ทำงานอยู่หรือไม่ได้ใช้งานเพิ่มคอลัมน์stateในSELECTข้อ
Mariano Ruiz

6
SELECT * FROM pg_stat_activity WHERE datname = 'dbname' and state = 'active';

เนื่องจากpg_stat_activityมีสถิติการเชื่อมต่อของฐานข้อมูลทั้งหมดที่มีสถานะใดสถานะหนึ่งidleหรือactiveชื่อฐานข้อมูลและสถานะการเชื่อมต่อควรรวมอยู่ในแบบสอบถามเพื่อให้ได้ผลลัพธ์ที่ต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.