管理DWS数据库连接
功能介绍
数据库集群默认支持一定数量的并发连接,当业务用户或应用程序数量增长、并发访问增大时,集群支持的连接数可能成为瓶颈,导致部分连接请求被拒绝,影响业务正常运行。管理员可通过如下方式管理数据库连接:
- 查看集群支持的最大连接数和当前已使用的连接数,评估集群连接资源的使用情况。
- 根据需要调整连接数相关参数(如max_connections),扩大或限制并发连接,使更多用户或应用程序可以同时连接到数据库,操作详情请参见修改DWS集群GUC参数。
约束与限制
- 集群支持的连接数与集群节点规格(vCPU核数、单节点DN数量)有关,规格越高,支持的连接数越多。
- 连接数相关参数取值为“-1”时,表示不限制连接数,即使用系统默认配置。
- 修改max_connections等连接数参数后,需要重启集群才能生效,重启期间集群服务中断。
支持的连接数规格
集群支持的连接数与集群节点规格有关,CN及DN概述详情请参见集群逻辑架构:
| 参数 | 参数描述 | 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的取值。
1SHOW max_connections;
界面显示的结果与以下信息类似,表示数据库默认支持的最大连接数为200。示例中的200仅为参考值,实际取值以集群节点规格为准。
max_connections ----------------- 200 (1 row)
查看已使用的连接数
- 使用SQL客户端工具连接集群中的数据库(推荐使用SQL编辑器连接DWS集群,详情请参见使用SQL编辑器连接集群)。
- 支持查看如表2所示的连接数场景。
- 除了创建的时候用双引号引用的数据库和用户名称外,以下命令中用到的数据库名称和用户名称,其中包含的英文字母必须使用小写。
- 以下命令中PG_ROLES、PG_DATABASE、PG_STAT_ACTIVITY、V$SESSION为DWS系统视图,详情请参见系统视图。其中ROLCONNLIMIT表示用户的连接数上限,DATCONNLIMIT表示数据库的连接数上限。
- 以下命令中的dbadmin、gaussdb仅为示例,请替换为实际用户名称和数据库名称。
表2 查看连接数介绍 描述
命令
查询结果及说明
查看指定用户的会话连接数上限。
执行如下命令查看连接到指定用户dbadmin的会话连接数上限。
1SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='dbadmin';
查询结果类似如下信息,其中rolconnlimit为-1,表示未对用户dbadmin设置连接数限制(“-1”表示不限制)。
rolname | rolconnlimit ----------+-------------- dwsadmin | -1 (1 row)
查看指定用户已使用的会话连接数。
执行如下命令查看指定用户dbadmin已使用的会话连接数。
1SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='dbadmin';
查询结果类似如下信息,其中结果为1,表示用户dbadmin当前已使用的会话连接数为1。
count ------- 1 (1 row)查看指定数据库的会话连接数上限。
执行如下命令查看连接到指定数据库gaussdb的会话连接数上限。
1SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='gaussdb';
查询结果类似如下信息,其中datconnlimit为-1,表示未对数据库gaussdb设置连接数限制。
datname | datconnlimit ----------+-------------- gaussdb | -1 (1 row)
查看指定数据库已使用的会话连接数。
执行如下命令查看指定数据库gaussdb上已使用的会话连接数。
1SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='gaussdb';
查询结果类似如下信息,其中结果为1,表示数据库gaussdb上当前已使用的会话连接数为1。
count ------- 1 (1 row)查看所有用户已使用会话连接数。
执行如下命令查看所有用户已使用的会话连接数。
1SELECT COUNT(*) FROM PG_STAT_ACTIVITY;
查询结果类似如下信息,其中结果为10,表示当前所有用户已使用的会话连接数合计为10。
count ------- 10 (1 row) - 执行命令后,比对返回结果与预期值。若返回的计数等取值与业务实际相符,则说明查看操作成功。
相关文档
- 集群逻辑架构:集群逻辑架构
- 连接DWS集群SQL客户端工具操作指导:连接DWS集群方式介绍