VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

查看数据库连接数

背景信息

当用户连接数达到上限后,无法建立新的连接。因此,当数据库管理员发现某用户无法连接到数据库时,需要查看是否连接数达到了上限。控制数据库连接的主要以下几种选项。

  • 全局的最大连接数:由运行参数max_connections指定。
  • 某用户的连接数:在创建用户时由CREATE ROLE命令的CONNECTION LIMIT connlimit子句直接设定,也可以在设定以后用ALTER ROLECONNECTION LIMIT connlimit子句修改。
  • 某数据库的连接数:在创建数据库时,由CREATE DATABASECONNECTION LIMIT connlimit参数指定。

操作步骤

1、以操作系统用户vastbase登录数据库主节点。

2、使用如下命令连接数据库。

vsql -d vastbase -p 5432

vastbase为需要连接的数据库名称,5432为数据库主节点的端口号。

连接成功后,系统显示类似如下信息:

vsql ((Vastbase G100 V2.2 (Build 10) Release) compiled at 2023-06-08 21:53:13 commit 13660 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

vastbase=#

3、查看全局会话连接数限制。

SHOW max_connections;

返回结果为:

    max_connections
-----------------
    800
(1 row)

其中800是最大会话连接数。

4、查看已使用的会话连接数。 具体命令请参见表1

除了创建的时候用双引号引起的数据库和用户名称外,以下命令中用到的数据库名称和用户名称,其中包含的英文字母必须使用小写。

表 1 查看会话连接数

描述

命令

查看指定用户的会话连接数上限。

执行如下命令查看连接到指定用户vastbase的会话连接数上限。其中-1表示没有对用户vastbase设置连接数的限制。

SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='vastbase';
返回结果为:
    rolname  | rolconnlimit
————————————–+———————————————
    vastbase |           -1
(1 row)

查看指定用户已使用的会话连接数。

执行如下命令查看指定用户vastbase已使用的会话连接数。其中,1表示vastbase已使用的会话连接数。

步骤1:
CREATE OR REPLACE VIEW DV_SESSIONS AS
            SELECT
            sa.sessionid AS SID,
            0::integer AS SERIAL#,
            sa.usesysid AS USER#,
            ad.rolname AS USERNAME
            FROM pg_stat_get_activity(NULL) AS sa
            LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)
            WHERE sa.application_name <> 'JobScheduler';
步骤2:
SELECT COUNT(*) FROM DV_SESSIONS WHERE USERNAME='vastbase';
返回结果例如:
count
——————- 
9
(1 row)

查看指定数据库的会话连接数上限。

执行如下命令查看连接到指定数据库vastbase的会话连接数上限。其中-1表示没有对数据库vastbase设置连接数的限制。

SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='vastbase';
返回结果为:
datname  | datconnlimit
————————–+———————————
vastbase |     -1
(1 row)

查看指定数据库已使用的会话连接数。

执行如下命令查看指定数据库vastbase上已使用的会话连接数。其中,count返回结果1表示数据库vastbase上已使用的会话连接数。

SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='vastbase';

查看所有用户已使用会话连接数。

执行如下命令查看所有用户已使用的会话连接数。

步骤1:
CREATE OR REPLACE VIEW        DV_SESSIONS AS
   SELECT
    sa.sessionid AS SID,
    0::integer AS SERIAL#,
    sa.usesysid AS USER#,
    ad.rolname AS USERNAME
    FROM pg_stat_get_activity(NULL) AS sa
    LEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)
    WHERE sa.application_name <> 'JobSchedul';
步骤2:
SELECT COUNT(*) FROM DV_SESSIONS;
返回结果例如:
 count
———————-
23
(1 row)