更新时间:2026-09-28 GMT+08:00
分享

管理DWS数据库连接

功能介绍

数据库集群默认支持一定数量的并发连接,当业务用户或应用程序数量增长、并发访问增大时,集群支持的连接数可能成为瓶颈,导致部分连接请求被拒绝,影响业务正常运行。管理员可通过如下方式管理数据库连接:

  • 查看集群支持的最大连接数和当前已使用的连接数,评估集群连接资源的使用情况。
  • 根据需要调整连接数相关参数(如max_connections),扩大或限制并发连接,使更多用户或应用程序可以同时连接到数据库,操作详情请参见修改DWS集群GUC参数。

约束与限制

  • 集群支持的连接数与集群节点规格(vCPU核数、单节点DN数量)有关,规格越高,支持的连接数越多。
  • 连接数相关参数取值为“-1”时,表示不限制连接数,即使用系统默认配置。
  • 修改max_connections等连接数参数后,需要重启集群才能生效,重启期间集群服务中断。

支持的连接数规格

集群支持的连接数与集群节点规格有关,CN及DN概述详情请参见集群逻辑架构:

表1 支持连接数规格

参数

参数描述

CN连接数

DN连接数

max_connections

允许和数据库连接的最大并发连接数。

当集群中的连接数达到该值时,新的连接请求将被拒绝。

800

max(vCPU核数/单节点DN数量*120+24, 5000)

max_pool_size

CN的连接池与其它某个CN/DN的最大连接数。

该参数应结合max_connections综合设置,确保连接池连接总数不超过集群可用的连接资源。

max_prepared_transactions

设置可以同时处于预备状态的事务的最大数。

建议将该参数设置为不小于max_connections,避免两阶段提交时因预备事务槽位不足而失败。

查看最大连接数

  • 方式一:登录DWS管理控制台,集群创建成功后,单击指定集群名称,切换至“参数修改”模块,在“所有配置”里查看数据库参数max_connections的取值。
    图1 查看max_connections参数取值
  • 方式二:使用SQL客户端工具连接集群中的数据库后,通过SQL命令的方式查看数据库参数max_connections的取值。
    1
    SHOW max_connections;
    

    界面显示的结果与以下信息类似,表示数据库默认支持的最大连接数为200。示例中的200仅为参考值,实际取值以集群节点规格为准。

    max_connections
    ----------------- 
    200
    (1 row)

查看已使用的连接数

  1. 使用SQL客户端工具连接集群中的数据库(推荐使用SQL编辑器连接DWS集群,详情请参见使用SQL编辑器连接集群)。
  2. 支持查看如表2所示的连接数场景。

    • 除了创建的时候用双引号引用的数据库和用户名称外,以下命令中用到的数据库名称和用户名称,其中包含的英文字母必须使用小写。
    • 以下命令中PG_ROLES、PG_DATABASE、PG_STAT_ACTIVITY、V$SESSION为DWS系统视图,详情请参见系统视图。其中ROLCONNLIMIT表示用户的连接数上限,DATCONNLIMIT表示数据库的连接数上限。
    • 以下命令中的dbadmin、gaussdb仅为示例,请替换为实际用户名称和数据库名称。
    表2 查看连接数介绍

    描述

    命令

    查询结果及说明

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

    执行如下命令查看连接到指定用户dbadmin的会话连接数上限。

    1
    SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='dbadmin';
    

    查询结果类似如下信息,其中rolconnlimit为-1,表示未对用户dbadmin设置连接数限制(“-1”表示不限制)。

     rolname  | rolconnlimit
    ----------+--------------
     dwsadmin |           -1
    (1 row)

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

    执行如下命令查看指定用户dbadmin已使用的会话连接数。

    1
    SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='dbadmin';
    

    查询结果类似如下信息,其中结果为1,表示用户dbadmin当前已使用的会话连接数为1。

     count
    -------
         1
    (1 row)

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

    执行如下命令查看连接到指定数据库gaussdb的会话连接数上限。

    1
    SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='gaussdb';
    

    查询结果类似如下信息,其中datconnlimit为-1,表示未对数据库gaussdb设置连接数限制。

     datname  | datconnlimit
    ----------+--------------
     gaussdb |           -1
    (1 row)

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

    执行如下命令查看指定数据库gaussdb上已使用的会话连接数。

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

    查询结果类似如下信息,其中结果为1,表示数据库gaussdb上当前已使用的会话连接数为1。

     count 
    -------
         1
    (1 row)

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

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

    1
    SELECT COUNT(*) FROM PG_STAT_ACTIVITY;
    

    查询结果类似如下信息,其中结果为10,表示当前所有用户已使用的会话连接数合计为10。

     count
    -------
         10
    (1 row)

  3. 执行命令后,比对返回结果与预期值。若返回的计数等取值与业务实际相符,则说明查看操作成功。

相关文档

相关文档