sys_stat_activity檢視

風陵渡口_發表於2023-10-17

kingbase資料庫的sys_stat_activity檢視,記錄當前資料庫例項的會話資訊。日常工作中可以透過此檢視資訊排查資料庫問題。透過命令select * from sys_stat_activity;

test=# select * from sys_stat_activity limit 1;

-[ RECORD 1 ]----+------------------------------

datid            |                                       後臺連線資料庫的id (oid)

datname          |                                  資料庫名

pid              | 46317                       #程式號

usesysid         | 10 

usename          | system                 #連線使用者名稱

application_name | sys_ksh collector   # 透過後臺連線的應用程式名稱

client_addr      |                                        #後臺連線的IP地址。當該欄位為空時,說明客戶端是在伺服器主機上透過Unix的socket協議直連,或是資料庫內部程式(如autovacuum等)

client_hostname  |                                    #客戶端主機名

client_port      |                                         #客戶端埠

backend_start    | 2023-10-16 17:31:28.136011+08    #會話開始時間

xact_start       |                                                             #事務開始時間

query_start      |                                                           #查詢開始時間

state_change     | 2023-10-17 10:23:49.002900+08     #狀態開始時間

wait_event_type  | Activity                                             #等待事務型別

wait_event       | KshMain                                              #登待事務

 state            | idle                                                          事務狀態

backend_xid      |                                                      

backend_xmin     | 

query            | 

backend_type     | ksh collector

state有以下幾個值分別對應:

active:後端正在執行一個查詢

idle:後端正在等待一個新的命令

idle in transaction:表示當前事務未提交

常用的命令總結

1、select count(*) from pg_stat_activity where state=‘idle’; 查詢閒置連線數

2、 select count(*) from sys_stat_activity where pid != sys_backend_pid();檢視當前活躍的客戶端(不包含當前查詢程式)

3、

select pid,state,CURRENT_TIMESTAMP - least(query_start,xact_start) AS runtime,

substr(query,1,25) AS current_query

from sys_stat_activity where not pid = sys_backend_pid();

4、

select * from sys_stat_activity where state<>'idle' and now()-query_start > interval '5 s' order by query_start ; 檢視當前會話中查詢超過5s的sql

5、

select pid,sys_blocking_pids(pid) as blocked,state,query,wait_event,wait_event_type from sys_stat_activity where state != 'idle';

檢視當前被阻塞的會話資訊。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162734/viewspace-2989305/,如需轉載,請註明出處,否則將追究法律責任。

相關文章