Storage & auto-grow
Every database has a fixed disk size set by its tier (free 1 GiB, standard 10 GiB, and so on). This page covers how that disk is measured, how it grows, and what happens as it fills.
The storage bar
Section titled “The storage bar”The database detail page shows a Disk used bar. It measures the actual volume usage (the PVC filesystem) — not just your table data — so it reflects everything on disk: your data, indexes, the write-ahead log, and temporary files. It turns amber at 60% and red at 80%.
The storage object on the database detail carries usedGi, capacityGi, and usedPercent.
Why a new database already shows some disk used
Section titled “Why a new database already shows some disk used”A brand-new or empty PostgreSQL database shows roughly 2 GB already used. That’s expected — PostgreSQL reserves a floor for its write-ahead log (min_wal_size ≈ 2 GB). On a 10 GiB standard database that reads as ~20% used while empty.
Auto-grow (paid databases)
Section titled “Auto-grow (paid databases)”Paid databases can opt into storage auto-grow so they never run out of disk unexpectedly. It’s off by default — you turn it on per database.
When enabled, once the disk crosses 80% used, PandaStack grows the volume by the larger of 50% of current size or 10 GiB, up to a maximum you set. Growth happens at most once every 6 hours.
| Setting | Value |
|---|---|
| Trigger | Disk reaches 80% used |
| Growth step | max(50% of current size, +10 GiB) |
| Maximum size | You choose, up to a ceiling of 250 GiB |
| Cooldown | At most one grow per 6 hours |
| Availability | Paid tier only, opt-in, default off |
The 250 GiB ceiling bounds the worst-case storage bill (storage is ~$0.040/GB-month). Enabling auto-grow on a free database is rejected — free tier can’t opt in.
Turning it on
Section titled “Turning it on”On the database detail page, open the Storage section and enable Auto-expand storage, then set a Maximum size (≤ 250 GiB). You can also set it at create time or via the API:
POST /v1/databases · PUT /v1/databases/:id
| Field | Type | Notes |
|---|---|---|
autoGrowEnabled | boolean | Turn auto-grow on/off. Paid tier only. |
autoGrowMaxGi | number | Ceiling the volume will never exceed. Max 250. |
What happens when a database fills up
Section titled “What happens when a database fills up”Free databases — a read-only wall (not silent death)
Section titled “Free databases — a read-only wall (not silent death)”Free databases have no auto-grow, so PandaStack protects them with legible storage walls instead of letting them silently die:
| Disk used | What happens |
|---|---|
| ≥ 85% | Warning email to the owner (at most once per 24h) |
| ≥ 92% | Database goes read-only — reads keep working, writes are blocked. The dashboard shows a red “Storage full — read-only” banner with an upgrade link. |
| ≥ 97% | Urgent notice — the database is still filling even while read-only |
| < 80% | Auto-unlock — writes are restored automatically once usage drops back below 80% |
The read-only state is reflected by storageReadOnly on the database. The usual fix is to upgrade the tier (which grows the disk) or free up space; once usage falls under 80%, the guard lifts the read-only wall on its own — no support ticket needed.
Paid databases — never blocked
Section titled “Paid databases — never blocked”Paid databases are never switched to read-only. You’ll get a notification at 85% and an urgent one at 95%, but the database keeps serving writes (bill-don’t-block). Turn on auto-grow so the disk expands before you hit the wall.
Related
Section titled “Related”- Tiers & scaling — the disk size each tier provisions
- Free-tier lifecycle — the time-based free-DB lifecycle (separate from storage)
- Backups & restore · Metrics
- Database connection issues