Redshift Serverless如何查看并终止活跃连接以删除数据库?
如何在Redshift Serverless中查看活跃连接并删除数据库?
Redshift Serverless与传统Redshift集群的系统视图存在差异,stv_sessions是集群版专属视图,Serverless中需使用PostgreSQL兼容的系统视图来查看和管理连接,具体操作步骤如下:
1. 查看目标数据库的活跃会话
使用pg_stat_activity视图查询目标数据库的所有活跃连接(排除当前执行查询的会话):
SELECT pid, usename, datname, state, query_start FROM pg_stat_activity WHERE datname = '[my_database_name]' AND pid <> pg_backend_pid();
字段说明:
pid:会话的进程ID,用于后续终止连接usename:发起连接的用户账号datname:连接的数据库名称state:当前会话状态(如active表示正在执行查询,idle表示空闲)query_start:会话启动时间
2. 终止目标数据库的活跃连接
通过pg_terminate_backend函数终止所有目标数据库的活跃连接(同样排除当前会话):
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '[my_database_name]' AND pid <> pg_backend_pid();
执行该语句后,所有连接到目标数据库的外部会话都会被强制断开。
3. 删除数据库
确认所有活跃连接已终止后,执行删除命令:
DROP DATABASE [my_database_name];
额外注意事项
- 终止连接前请提前通知相关用户,避免中断正在进行的业务操作或导致数据丢失。
- 如果执行终止操作后仍有新连接建立,可以先限制目标数据库的连接数,阻止新连接进入:
待终止所有现有连接后,再执行删除命令。ALTER DATABASE [my_database_name] CONNECTION LIMIT 0;
内容的提问来源于stack exchange,提问作者gbeaven
相关产品推荐
相关产品推荐

