Database tiers & scaling
Every database runs on an instance tier that fixes its vCPU, RAM, and disk. Tiers range from a free 0.25 vCPU / 0.5 GB / 1 GiB instance up to dedicated 8 vCPU / 16 GB instances, and you can change tier in both directions after creation.
Tier catalog
Section titled “Tier catalog”The instanceType on a database is one of these tier slugs. cpu is vCPU, memory is GB RAM, disk is the provisioned volume in GiB, and monthly is USD per month.
| Tier slug | Label | vCPU | RAM (GB) | Disk (GiB) | $/mo | Free? |
|---|---|---|---|---|---|---|
free-tier | Free | 0.25 | 0.5 | 1 | 0 | yes |
standard-tier | Standard | 1 | 2 | 10 | 18.25 | no |
c1-compute-tier | C1-Compute | 2 | 4 | 20 | 51.10 | no |
c1-2xcompute-tier | C1-2XCompute | 4 | 8 | 40 | 102.20 | no |
c2-compute-tier | C2-Compute | 6 | 12 | 60 | 109.50 | no |
c2-2xcompute-tier | C2-2XCompute | 8 | 16 | 80 | 219.00 | no |
m1-memory-tier | M1-Memory | 1 | 4 | 20 | 43.80 | no |
m1-2xmemory-tier | M1-2XMemory | 2 | 8 | 40 | 87.60 | no |
m2-memory-tier | M2-Memory | 2 | 12 | 40 | 94.90 | no |
m2-2xmemory-tier | M2-2XMemory | 4 | 24 | 80 | 189.80 | no |
The C-series is compute-optimized (higher vCPU per GB), the M-series is memory-optimized (higher GB per vCPU), and the 2X variants double both. A tier’s serverDetails (cpu, memory, disk) is echoed on every database detail response.
Paid gating
Section titled “Paid gating”Any tier other than free-tier requires an active paid plan. The same server-side check (isOrgPaid) gates both container and database create/change paths, so a free organization cannot provision or move to a paid tier — a create or change request that violates this returns 402.
Replicas & architecture
Section titled “Replicas & architecture”A database’s architecture sets how many replicas it runs:
architecture | Topology | Replicas | Availability | Plan |
|---|---|---|---|---|
standalone | Single Zone | 1 | No HA | Any tier |
replicaset | Multiple Zone | 3 | High availability | Paid only |
The free tier is single-zone only — selecting a free tier snaps architecture back to standalone. High availability requires a paid tier.
Changing tier
Section titled “Changing tier”POST /v1/databases/:id/tier
changeTier handles all directions — scaling up, scaling down, rescuing a free database to paid, and downgrading paid → free. You never state the direction; the server classifies it from the tier catalog.
Request body (ChangeTierInput):
| Field | Type | Required | Notes |
|---|---|---|---|
instanceType | string | Yes | Target tier slug; must exist in the catalog (else Unknown tier.). |
expectedCurrentTier | string | No | Optimistic concurrency — the tier you believe is current. If it doesn’t match, the request 409s (stale). |
confirmDowngradeToFree | boolean | No (default false) | Required acknowledgement to downgrade to free-tier. |
Behavior:
- One change at a time. A change is rejected while the database is in a busy status (
updating,deleting,deploying,queued,pending). - Intent vs. reality. The row records
targetInstanceTypeas the requested intent; the worker advances the realinstanceTypeonly on verified success. - Optimistic concurrency. Pass
expectedCurrentTierto guard against a racing change — a mismatch returns409. - Topics. A scale-up/down emits
database.upgrade; a downgrade to free emitsdatabase.downgrade-free, both consumed by worker-v3.
Scale up / down
Section titled “Scale up / down”curl -X POST https://api.pandastack.io/v1/databases/903/tier \ -H "Authorization: Bearer $PANDASTACK_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "instanceType": "c1-compute-tier", "expectedCurrentTier": "standard-tier" }'Downgrade paid → free
Section titled “Downgrade paid → free”Downgrading to free-tier requires the explicit confirmDowngradeToFree acknowledgement — it is destructive to billing and re-arms the 30-day suspend/purge lifecycle (see Free-tier lifecycle). It is a compute-only downscale that keeps the existing disk — Kubernetes cannot shrink a PVC, so the volume is not reduced.
curl -X POST https://api.pandastack.io/v1/databases/903/tier \ -H "Authorization: Bearer $PANDASTACK_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "instanceType": "free-tier", "confirmDowngradeToFree": true }'Connection limits by plan
Section titled “Connection limits by plan”The number of concurrent connections a database allows scales with your plan:
| Plan | DB connection limit |
|---|---|
| Free | 50 |
| Pro | 300 |
| Premium | 1000 |
| Enterprise | unlimited |
Related
Section titled “Related”- Databases overview
- Create a database
- Free-tier lifecycle — what a downgrade to free re-arms.
- Instance tiers · Plans & limits