在 PostgreSQL 中显示连接
Shihab Sikder
2023年1月30日
2022年5月14日
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
通过执行这些步骤,你应该能够删除任何活动的数据库。
Author: Shihab Sikder