在 PostgreSQL 中顯示連線
Shihab Sikder
2023年1月30日
pg_stat_activity
是一個資料庫檢視。該檢視是一個虛擬表,出於安全原因使用它。
它基於資料庫中的一個或多個表儲存查詢,而不是重複編寫相同的查詢。
PostgreSQL 中連線/查詢的狀態
pg_stat_activity
顯示與當前活動相關的資訊。pg_stat_activity
中有一個列型別列表。
其中,所有都不是必需的。假設你想檢視 psql 中的活動連線。
因此,你可以執行以下命令。
SELECT
pid
,datname
,usename
,application_name
,client_hostname
,client_port
,backend_start
,query_start
,query
,state
FROM pg_stat_activity
WHERE state = 'active';
輸出:
postgres-# WHERE state = 'active';
pid | datname | usename | application_name | client_hostname | client_port | backend_start | query_start | query | state
-------+----------+----------+------------------+-----------------+-------------+------------------------------+-------------------------------+-------------------------+--------
24256 | postgres | postgres | psql | | 1068 | 2022-04-02 16:03:07.20189+06 | 2022-04-02 16:03:10.382665+06 | SELECT +| active
| | | | | | | | pid +|
| | | | | | | | ,datname +|
| | | | | | | | ,usename +|
| | | | | | | | ,application_name +|
| | | | | | | | ,client_hostname +|
| | | | | | | | ,client_port +|
| | | | | | | | ,backend_start +|
| | | | | | | | ,query_start +|
| | | | | | | | ,query +|
| | | | | | | | ,state +|
| | | | | | | | FROM pg_stat_activity +|
| WHERE state = 'active'; |
(1 row)
postgres=#
有列型別列表。其中一些我們在上面的 SQL 命令中使用。
這是表中的描述。
列名 | 描述 |
---|---|
datname |
資料庫名稱 |
application_name |
連線到此後端的應用程式。 |
client_host-name |
對於 localhost ,它將是空白的,但會有一個用於遠端連線的主機名。 |
client_port |
客戶端用於與後端通訊的 TCP 埠。 |
backend_start |
此時間戳顯示客戶端何時連線。 |
query_start |
此時間戳顯示此查詢何時開始。如果資料庫被禁用,它將顯示上次查詢的開始時間。 |
query |
此文字顯示實際查詢。 |
status |
這顯示了資料庫的狀態。 |
這是所有列名和有關它的詳細資訊。此外,你可以從該官方文件中找到所有觀點。
在 PostgreSQL 中刪除資料庫
刪除資料庫的一般命令如下所示。
DROP DATABASE [IF EXISTS] <database_name>;
但是當你與資料庫建立活動連線時,可能會出現問題。在這種情況下,你需要執行以下操作。
-
首先,檢查資料庫是否處於活動狀態。使用以下查詢,你可以檢視特定資料庫的所有詳細資訊。
SELECT * FROM pg_stat_activity WHERE datname = <name of the database>;
-
然後,你需要殺死那個資料庫的程序。假設你有一個名為
Shop
的活動資料庫。現在讓我們終止該資料庫的程序。
SELECT pg_terminate_backend (pid) FROM pg_stat_activity WHERE pg_stat_activity = 'Shop';
現在,你已成功終止該過程。
-
執行
DROP
命令,如下所示。DROP DATABASE Shop
通過執行這些步驟,你應該能夠刪除任何活動的資料庫。
作者: Shihab Sikder