连接您的数据库
从前端、后端或无服务器环境连接Postgres数据库
快速概览
连接数据库的方式取决于您的连接来源:
- 前端应用程序:使用数据API
- Postgres客户端:使用连接字符串
- 单次会话(如数据库GUI工具)或Postgres原生命令(如使用pg_dump客户端工具或配置外部复制连接):如果您的环境支持IPv6,使用直接连接字符串
- 持久化客户端,且需要同时支持IPv4和IPv6:使用Supavisor会话模式
- 临时客户端(如无服务器或边缘函数):使用Supavisor事务模式
快速入门
数据API与客户端库
数据API允许您通过REST或GraphQL请求与数据库交互。只要启用了行级安全(RLS),您就可以从前端使用这些API获取和插入数据。
为方便起见,您也可以使用Supabase客户端库,它们以开发者友好的接口封装了数据API并自动处理认证:
直接连接
直接连接字符串可直接连接到您的Postgres实例。这种连接方式非常适合持久性服务器,例如虚拟机(VM)和长期运行的容器。典型用例包括AWS EC2实例、Fly.io虚拟机和DigitalOcean Droplets。
直接连接默认使用IPv6协议。如果您的环境不支持IPv6,请使用Supavisor会话模式或获取IPv4附加组件。
连接字符串格式如下:
1postgresql://postgres:[YOUR-PASSWORD]@db.apbkobhfnmcqqzqeeqss.supabase.co:5432/postgres
在项目仪表板中点击Connect获取项目的直接连接字符串。
共享连接池
每个Supabase项目都包含一个免费的共享连接池。当不支持IPv6时,这是持久性服务器的理想选择。
Supavisor 会话模式
会话模式连接字符串通过代理连接到您的 Postgres 实例。
连接字符串格式如下:
1postgres://postgres.apbkobhfnmcqqzqeeqss:[YOUR-PASSWORD]@aws-0-[REGION].pooler.supabase.com:5432/postgres
在项目仪表盘中点击 Connect 获取您项目的会话池连接字符串。
Supavisor 事务模式
事务模式连接字符串通过代理连接到您的 Postgres 实例,该代理充当连接池。这种模式非常适合需要大量短暂连接的无服务器或边缘函数。
连接字符串格式如下:
1postgres://postgres.apbkobhfnmcqqzqeeqss:[YOUR-PASSWORD]@aws-0-[REGION].pooler.supabase.com:6543/postgres
在项目仪表盘中点击 Connect 获取您项目的事务池连接字符串。
专用连接池
对于付费客户,我们会提供一个与您的Postgres数据库同地部署的专用连接池(PgBouncer)。这要求您使用IPv6连接,如果不可行,可以使用IPv4附加组件。
专用连接池能确保最佳性能和最低延迟,但会消耗更多项目计算资源。如果您的网络支持IPv6或已启用IPv4附加组件,我们建议优先使用专用连接池而非共享连接池。
通过项目仪表板点击连接获取项目的专用连接池连接字符串。
PgBouncer始终运行在事务模式下,当前版本不支持预处理语句(将在几周内添加此功能)。
关于连接池的更多信息
连接池通过复用查询间的现有连接来提升数据库性能,减少建立连接的开销并提高可扩展性。
根据后端是持久化还是无服务器架构,您可以选择使用应用端连接池或服务端连接池(Supabase自动提供的Supavisor)。
应用端连接池
应用端连接池内置于连接库和API服务器中,如Prisma、SQLAlchemy和PostgREST。它们会与Postgres或服务端连接池保持多个活跃连接,减少查询间建立连接的开销。当部署到静态架构(如长期运行的容器或虚拟机)时,单独使用应用端连接池就已足够。
服务器端连接池
Postgres 连接类似于 WebSocket。一旦建立,它们会一直保持,直到客户端(应用服务器)断开连接。服务器可能只执行一个 10 毫秒的查询,却毫无必要地占用数据库连接数秒甚至更长时间。
服务器端连接池(如 Supabase 的 Supavisor 事务模式)位于客户端和数据库之间,可以视为 Postgres 连接的负载均衡器。
连接池与数据库保持热连接,并智能地在需要时将这些连接共享给客户端,从而最大化单个连接可服务的查询量。它们最适合用于管理来自自动扩展系统(如边缘函数和无服务器函数)的查询。
使用 SSL 连接
在任何可能的情况下,都应使用 SSL 连接数据库,以防止窃听和中间人攻击。
您可以从应用的仪表板获取连接信息和服务器根证书: