Skip to content

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 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.

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.

SettingValue
TriggerDisk reaches 80% used
Growth stepmax(50% of current size, +10 GiB)
Maximum sizeYou choose, up to a ceiling of 250 GiB
CooldownAt most one grow per 6 hours
AvailabilityPaid 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.

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

FieldTypeNotes
autoGrowEnabledbooleanTurn auto-grow on/off. Paid tier only.
autoGrowMaxGinumberCeiling the volume will never exceed. Max 250.

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 usedWhat 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 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.