数据库

连接管理

合理利用你的连接资源


连接#

每个 计算附加组件 都有预配置的直接连接数和 Supavisor 资源池大小。本指南讨论了观察和合理管理它们的方法。

配置 Supavisor 的资源池大小#

你可以通过更改“数据库设置”中的“连接池配置”部分来更改 Supavisor 可以管理的数据库连接数。数据库设置

Connection Info and Certificate.

通常的规则是,如果你大量使用 PostgREST 数据库 API,你应该注意将你的资源池大小提高到数据库最大连接数的 40% 以上。否则,你可以将 80% 分配给资源池。这样可以为身份验证服务器和其他实用程序留下足够的空间。

这些数字是概括性的,取决于你使用的其他 Supabase 产品以及它们的具体使用情况。实际值取决于你并发峰值连接的使用情况。例如,如果你在一个星期内只使用了 80 个连接,而你的数据库最大连接数设置为 500,那么实际上你可以分配 420 的差值(减去合理的缓冲)来服务更多需求。

监控连接#

捕获历史使用情况#

仪表盘监控图表#

Database client connections chart

对于团队和企业计划,Supabase 在仪表盘内直接提供高级遥测图表。数据库客户端连接图表显示按连接类型细分的历史连接数据

  • Postgres:来自你的应用程序的直接连接
  • PostgREST:来自 PostgREST API 层的连接
  • Reserved:Supabase 服务管理连接
  • Auth:来自 Supabase Auth 服务的连接
  • Storage:来自 Supabase Storage 服务的连接
  • Other roles:其他数据库连接

此图表可帮助你监控连接池使用情况、识别连接泄漏并规划容量。它还显示了你的计算规模的最大连接限制的参考线。

有关使用这些监控图表的更多详细信息,请参阅 报告指南

Grafana 仪表盘#

Supabase 提供了一个 Grafana 仪表盘,可以记录和可视化 200 多个项目指标,包括连接。有关设置说明,请查看 指标文档

它的“客户端连接”图表显示 Supavisor 和 Postgres 的连接 client connection graph

观察实时连接#

pg_stat_activity 是一个特殊视图,它跟踪数据库正在运行的进程,包括实时连接。它对于确定空闲客户端是否占用连接插槽特别有用。

查询所有实时连接

1
SELECT
2
pg_stat_activity.pid as connection_id,
3
ssl,
4
datname as database,
5
usename as connected_role,
6
application_name,
7
client_addr as IP,
8
query,
9
query_start,
10
state,
11
backend_start
12
FROM pg_stat_ssl
13
JOIN pg_stat_activity
14
ON pg_stat_ssl.pid = pg_stat_activity.pid;

解释查询

描述
connection_id连接 ID
ssl指示是否使用 SSL
database连接的数据库名称(通常为 postgres
usename连接用户的角色
application_name连接应用程序的名称
client_addr连接服务器的 IP 地址
query连接执行的最后一个查询
query_start执行最后一个查询的时间
state查询状态:活动或空闲
backend_start连接建立的时间戳

可以使用用户名来识别来源

角色API/工具
supabase_adminSupabase 用于监控和实时数据
authenticator数据 API (PostgREST)
supabase_auth_admin认证
supabase_storage_admin存储
supabase_replication_admin同步只读副本
postgresSupabase 仪表盘和外部工具(例如,Prisma、SQLAlchemy、PSQL...)
用户定义的自定义角色外部工具(例如,Prisma、SQLAlchemy、PSQL...)