Prisma Postgres

prisma.io

ALMOST

A weekend of work, and real gaps remain.

Managed Postgres aimed at serverless applications: connection pooling and a query layer in front, so a runtime that opens a connection per request does not exhaust the database.

Promptfree, for everyone, and the only version there is
Build the Postgres setup I actually need instead of a managed serverless one — and start with the problem it solves, because you may not have it.

**The problem is connections.** A serverless runtime opens one per request, and Postgres allocates a process per connection, so a few hundred concurrent requests exhaust a database that would otherwise be idle. If your application is a long-running process on one machine, you do not have this problem and none of the machinery below is needed.

STACK
- Postgres on a machine you rent, or SQLite on the application's own machine if the shape allows
- PgBouncer in transaction mode for pooling. Do not write a pooler
- Node 20+ for the application
- Caddy in front

IF YOU ARE SERVERLESS
- PgBouncer in transaction pooling mode, which multiplexes many client connections onto a few real ones. That is the whole fix and it is a configuration file
- **Transaction mode breaks anything that spans statements**: prepared statements, session variables, advisory locks, LISTEN and NOTIFY. Know which your driver uses and disable prepared statements if it does, or you will get intermittent errors nobody can reproduce
- Set the pool size from the database's actual capacity rather than optimistically, and monitor waiting clients
- An HTTP query endpoint only if a runtime genuinely cannot open a socket. Then it is a thin authenticated proxy that parameterises everything and never takes SQL from a client

IF YOU ARE NOT SERVERLESS
- One connection pool in the application process, sized to the database. That is a library call and there is nothing else to do
- Consider whether you need Postgres at all. SQLite on the application's own machine turns every read into a local file read — microseconds, no network, no pool — and handles more than people expect

THE PART THAT MATTERS MORE THAN POOLING
- **Continuous archiving** of the write-ahead log to object storage, giving a recovery point measured in seconds rather than a night
- Nightly snapshots with a stated retention
- **A restore rehearsed onto a clean machine, with the time written down.** That number is your recovery time and almost nobody knows theirs
- A verification job, because a backup failing quietly for three weeks looks exactly like one that works
- An alert on the age of the last successful backup

MIGRATION DISCIPLINE
- Backwards-compatible in both directions across a deploy: add a column, deploy, write to it, backfill in batches, read from it, and remove the old one in a later release. Never two steps together
- Test every migration against a restored copy of production first

WATCHING IT
- Connection count against the limit, waiting clients in the pooler, slow queries with their plans, replication lag, and free disk with an alert well before it matters

WHAT MATTERS MOST
Work out whether you have the connection problem before solving it. If you do, PgBouncer in transaction mode is a configuration file; if you do not, the whole category is answering a question you did not ask.

What you lose

  • A pooler in front of the database, which is what makes serverless and Postgres work together at all
  • Backups, point-in-time restore and upgrades run by somebody else
  • A query layer reachable over HTTP, so an edge runtime that cannot open a socket can still read
  • Capacity that scales without you sizing anything

If you would rather not build

  • A connection pool in the application process, which is what a long-running server needs

The escape hatch

open source · no votes, no paid placement

PgBouncer

$0

The lightweight connection pooler for Postgres.

pgbouncer/pgbouncerfree · open source

Litestream

$0

Continuous replication of SQLite to object storage.

benbjohnson/litestreamfree · open source

Why this verdict

our own opinion · changed only by a person

46/100

Verdict kinda at 46: pooling is a configuration file and backups are a script, but the managed instance is somebody else recovering the database, and that is worth real money. The entry starts by asking whether the connection problem exists at all.

History

tracked since 14 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01217 Jul22 Jul27 Jul1 Aug6 Aug11 Aug15 Aug
views prompt copies none yet votes none yet

Questions about Prisma Postgres

answered from the record above

Is Prisma Postgres free?

No — the plan we track is $8 a month. Starter from around $8/month billed monthly, priced on storage and operations, with a free tier for small projects.

Can you replace Prisma Postgres by building your own?

ALMOST. A weekend of work, and real gaps remain. Replacement score 46 out of 100, build time a weekend. Read what you lose before you decide.

How much does Prisma Postgres cost?

$8 a month on Starter — $96 a year. Recorded 14 Aug 2026.

What do you lose by replacing Prisma Postgres?

A pooler in front of the database, which is what makes serverless and Postgres work together at all; Backups, point-in-time restore and upgrades run by somebody else; A query layer reachable over HTTP, so an edge runtime that cannot open a socket can still read; Capacity that scales without you sizing anything. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Prisma Postgres?

Yes: PgBouncer, Litestream. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 21 in Hosting & databases

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc