Working with Prisma Accelerate

1. Setting Up Prisma Accelerate

npm install @prisma/extension-accelerate
npx prisma generate --no-engine
StepDetail
Enable in PDPConsole → project → Accelerate
URLprisma://accelerate...?api_key=...
No engine build--no-engine reduces bundle

2. Configuring Connection Pooling

AspectDetail
Global poolerEdge regions worldwide
ServerlessEliminates cold-start pool exhaustion
No PgBouncer neededManaged for you

3. Enabling Query Caching

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

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

const users = await prisma.user.findMany({
  cacheStrategy: { ttl: 60, swr: 300 }
});
OptionDetail
ttlSeconds cached as fresh
swrStale-while-revalidate window
tagsGroup for invalidation

4. Setting Cache TTL

WorkloadTTL Recommendation
Hot reference300-3600s
User feed10-60s + SWR
Critical writesSkip cache

5. Implementing Cache Invalidation

await prisma.$accelerate.invalidate({ tags: ["users"] });
StrategyDetail
Tag-basedInvalidate by label
AllInvalidate everything (last resort)

6. Monitoring Cache Hit Rate

SourceDetail
PDP dashboardHit ratio per query
Response infoX-Accelerate-Cache header (HIT/MISS)

7. Using Edge Caching

BenefitDetail
Latency<50ms in many regions
Origin offloadReduce DB load
Vercel/CloudflareNative edge runtime support

8. Configuring Per-Query Cache

PatternDetail
Add cacheStrategyPer call basis
OmitBypass cache
ConditionalCache only for anonymous users

9. Handling Cache Misses

BehaviorDetail
Origin fetchGoes to DB on miss
SWRServes stale + refreshes async
StampedeCoalesced via pooler

10. Optimizing with Accelerate

TipDetail
Idempotent readsCacheable; avoid for tx-bound
Tag granularlySurgical invalidations
Combine with selectMinimize payload over the wire