Skip to main content

Set up Supabase with Accelerate Connection Pool

15 min

Introduction

This guides teaches you how to add connection pooling to a PostgreSQL database hosted on Supabase using Prisma Accelerate.

Prisma Accelerate is a robust and mature connection pooler enabling your database to function properly during traffic spikes and high load scenarios. Check out this video demonstrating how it performs in a load test or learn why connection pooling is important.

Prerequisites

To successfully complete this guide, you need a connection string for a PostgreSQL instance hosted on Supabase. It typically looks similar to this:

postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres

If you already have a project using Prisma ORM, you can skip the first two steps and jump ahead to Step 3. Install the Accelerate extension.

1. Set up Prisma ORM

Start by installing the Prisma CLI in your project:

npm install prisma --save-dev

Then, run the following command to initialize a new project:

npx prisma init

This will create a new prisma directory with a schema.prisma file and add a .env file with the DATABASE_URL environment variable.

Update the file and set the DATABASE_URL to your Supabase connection string:

.env
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

2. Introspect your database

Next, run the following command to introspect your database and create your data model:

npx prisma db pull

This command reads your database schema and creates new models in your schema.prisma file that match the tables in your database.

note

If you want to use Prisma Migrate in the future, you also need to baseline your database.

3. Install the Accelerate extension

Install the Prisma Client extension for Accelerate:

npm install @prisma/extension-accelerate

This is needed to access Prisma Accelerate's connection pool.

4. Set up Accelerate in the Prisma Console

To set up Accelerate in the Prisma Console, follow these steps:

  1. Log into the .
  2. Select New project
  3. Choose a Name for your project
  4. In the Choose your starting product section, find the Accelerate card and click Get started
  5. In the field for your Database connection string, paste your Supabase connection string
  6. Select the Region that's closest to your database
  7. Click Create project
  8. On the next screen, click Enable Accelerate

Once you went through these steps, you'll be redirected to another page where you need to the click the Generate API key button.

You'll then be shown a new connection URL which enables you to connect to Prisma Accelerate's connection pool. This needs to be set as the new DATABASE_URL in your .env file:

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

If you want to use Prisma Migrate with Prisma Accelerate, you can set the directUrl field on the datasource block:

schema.prisma
datasource db {
url = env("DATABASE_URL") // points to the connection pool for queries
directUrl = env("DIRECT_URL") // points to the database for migrations
}

Accordingly, you'll need to set the DIRECT_URL in your .env file:

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
DIRECT_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

5. Generate Prisma Client

With your Prisma schema in place, you can go ahead and generate Prisma Client:

npx prisma generate --no-engine

The --no-engine option is used to omit the query engine in the generated Prisma Client library. The query engine manages Prisma ORM's internal connection pool and is not needed when using Prisma Accelerate.

6. Send queries through the connection pool

In your application code, you now need to apply the Accelerate extension to your Prisma Client instance:

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

const prisma = new PrismaClient().$extends(withAccelerate())

At this point, you can now start sending queries which will be routed through the connection pool to your database.


Stay connected with Prisma

Continue your Prisma journey by connecting with our active community. Stay informed, get involved, and collaborate with other developers:

We genuinely value your involvement and look forward to having you as part of our community!