跳至主要内容

使用 Accelerate 连接池设置 Neon

15 分钟

介绍

本指南将教您如何使用 Prisma Accelerate 为托管在 Neon 上的 PostgreSQL 数据库添加连接池。

Prisma Accelerate 是一个强大且成熟的连接池,使您的数据库在流量高峰和高负载情况下也能正常运行。请观看此视频,了解它在负载测试中的表现,或者了解连接池的重要性

先决条件

要成功完成本指南,您需要 一个托管在 Neon 上的 PostgreSQL 实例的连接字符串。它通常看起来像这样:

postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require

如果您已经有一个使用 Prisma ORM 的项目,您可以跳过前两个步骤,直接跳到第 3 步:安装 Accelerate 扩展

1. 设置 Prisma ORM

首先在您的项目中安装 Prisma CLI

npm install prisma --save-dev

然后,运行以下命令初始化一个新项目

npx prisma init

这将创建一个新的 prisma 目录,其中包含 schema.prisma 文件,并添加一个包含 DATABASE_URL 环境变量的 .env 文件。

更新文件并将 DATABASE_URL 设置为您的 Neon 连接字符串

.env
DATABASE_URL="postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require"

创建一个 prisma.config.ts 文件来配置 Prisma

prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';

export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
});
注意

您需要安装 dotenv 包才能加载环境变量

npm install dotenv

2. 反射您的数据库

接下来,运行以下命令反射您的数据库并创建数据模型

npx prisma db pull

此命令读取您的数据库 schema 并在您的 schema.prisma 文件中创建与数据库中的表匹配的新模型。

注意

如果您将来想使用 Prisma Migrate,您还需要基准化您的数据库

3. 安装 Accelerate 扩展

安装适用于 Accelerate 的 Prisma Client 扩展

npm install @prisma/extension-accelerate

这是访问 Prisma Accelerate 连接池所需的。

4. 在 Prisma 控制台中设置 Accelerate

要在 Prisma 控制台中设置 Accelerate,请按照以下步骤操作

  1. 登录.
  2. 选择 新项目
  3. 为您的项目选择一个 名称
  4. 选择您的起始产品 部分,找到 Accelerate 卡并点击 开始使用
  5. 数据库连接字符串 字段中,粘贴您的 Neon 连接字符串
  6. 选择离您的数据库最近的 区域
  7. 点击 创建项目
  8. 在下一个屏幕上,点击 启用 Accelerate

完成这些步骤后,您将被重定向到另一个页面,您需要点击 生成 API 密钥 按钮。

然后您将看到一个新的连接 URL,它使您能够连接到 Prisma Accelerate 的连接池。这需要设置为您 .env 文件中新的 DATABASE_URL

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
注意

如果您想将 Prisma Migrate 与 Prisma Accelerate 一起使用,您需要在 prisma.config.ts 文件中提供一个直接的数据库 URL。Accelerate URL(以 prisma:// 开头)用于通过 PrismaClient 进行查询,而直接数据库 URL 用于迁移。

更新您的 prisma.config.ts

prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';

export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DIRECT_URL'), // Direct database URL for migrations
},
});

并将 DIRECT_URL 添加到您的 .env 文件中

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
DIRECT_URL="postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require"

5. 生成 Prisma Client

准备好 Prisma schema 后,您可以继续生成 Prisma Client

npx prisma generate
信息

在 Prisma 7 中,使用 Prisma Accelerate 时不再需要 --no-engine 标志。以前,您会运行 prisma generate --no-engine,但现在标准的 prisma generate 命令适用于所有用例。

6. 通过连接池发送查询

在您的应用程序代码中,您现在需要将 Accelerate 扩展应用到您的 Prisma Client 实例

import { PrismaClient } from "./generated/prisma/client"
import { withAccelerate } from "@prisma/extension-accelerate"

const prisma = new PrismaClient({
accelerateUrl: process.env.DATABASE_URL,
}).$extends(withAccelerate())

此时,您现在可以开始发送查询,这些查询将通过连接池路由到您的数据库。


与 Prisma 保持联系

通过以下方式与我们保持联系,继续你的 Prisma 之旅: 我们的活跃社区。保持信息灵通,参与其中,并与其他开发人员协作。

我们真诚地感谢你的参与,并期待你成为我们社区的一部分!

© . This site is unofficial and not affiliated with Prisma Data, Inc.