select * from pg_stat_activity
每個服務器進程的pg_stat_activity視圖將有一行,顯示與該進程的當前活動相關的信息。
殺死進程
現在我們找出所有連接到數據庫的進程了,那麼如何去殺死那些IDEL的進程從而釋放出連接呢?如果pg的版本是 8.4及以上的,可以很簡單地用下面的語句來殺死所有IDEL進程 :
SELECT pg_terminate_backend(procpid)
pg_cancel_backend 只是取消當前某一個進程的查詢操作,但不能釋放數據庫連接
pg_terminate_backend 可以在pg的後臺殺死這個進程,從而釋放出寶貴的連接資源
Column
Type
描述
datid
oid
該後端連接到的數據庫的OID
datname
name
該後端連接到的數據庫的名稱
pid
integer
此後端的進程ID
usesysid
oid
登錄到此後端的用戶的OID
usename
name
登錄到此後端的用戶的名稱
application_name
text
連接到此後端的應用程序的名稱
client_addr
inet
client_hostname
text
已連接客戶端的主機名,由client_addr的反向DNS查找報告。只有當 啓用log_hostname時,該字段對於IP連接纔是非空的。
client_port
integer
客戶端用於與此後端進行通信的TCP端口號,如果使用Unix套接字,則爲-1
backend_start
timestamp
此過程開始的時間,即客戶端連接到服務器的時間
xact_start
timestamp
此進程當前事務已啓動的時間;如果沒有事務處於活動狀態,則爲null。如果當前查詢是其第一個事務,則此列等於query_start列。
query_start
timestamp
當前活動查詢開始的時間,或者狀態未 處於活動狀態,最後一個查詢開始時的時間
state_change
timestamp
時值狀態 上次更改
waiting
boolean
如果此後端當前正在等待鎖定,則爲真
query
text
此後端的最新查詢的文本。如果 state 處於活動狀態,則此字段顯示當前正在執行的查詢 在所有其他狀態下,它顯示最後執行的查詢。
state
text
當前這個後端的整體狀態。可能的值是:active:後端正在執行查詢。idle:後端正在等待新的客戶端命令。idle in transaction:閒置在事務中,後端處於事務中,但當前未執行查詢。idle in transaction (aborted):與idle in transaction類似 ,除了事務中的某個語句導致錯誤。fastpath function call:快速路徑函數調用,後端正在執行快速路徑函數。