{{ summaryTitle }} {{ summaryValue }} {{ summaryLine }} {{ badge.label }}
Database storage capacity planner
Database capacity planning inputs
Choose a scenario or stay with Custom for a neutral planning baseline.
Use the closest engine family and verify the heuristic against observed storage metrics.
Keep the unit aligned with the source metric or catalog report.
Prefer measured 30-90 day growth over a single recent snapshot.
%
Match the horizon to procurement, reservation, or capacity-review cadence.
%
%
days
copies
%
{{ summaryLine }}
Optional export label; blank leaves the math unchanged.
Zero is neutral; use an observed bloat ratio when available.
%
Zero is neutral; add a measured or policy-based maintenance reserve.
%
One is neutral and assumes no additional modeled compression.
:1
One is neutral; use a tested backup compression ratio when known.
:1
Zero omits the optional local-log reserve.
hours
Zero models one retained backup set and no additional copy.
extra
Zero disables the separate autoscale-cap crossing check.
Zero omits cost pressure while keeping capacity results unchanged.
$/GiB-mo
{{ tableExportAnnouncement }}
{{ header }}Copy
{{ cell }}
{{ tableExportAnnouncement }}
{{ header }}Copy
{{ cell }}
{{ tableExportAnnouncement }}
{{ header }}Copy
{{ cell }}
{{ chartExportAnnouncement }}
Primary target Steady primary Provisioned {{ params.fill_threshold_pct }}% threshold
Monthly primary capacity ยท binary GiB

Introduction:

A database usually runs out of safe working room before the storage device reaches 100%. Index rebuilds, checkpoints, vacuuming, sorting, transaction logs, and emergency write bursts all need space that ordinary table-size reports do not show. Capacity planning therefore asks when normal use will cross an operating threshold, not merely when the volume becomes physically full.

The first number to establish is logical data: the application records before indexes, engine page overhead, bloat, and temporary work are added. Monthly growth compounds that data over the forecast horizon. A steady 6% monthly increase does not add 72% over a year; compounding produces about 101% growth because each month builds on the larger previous month.

Database storage planning layers
Planning layer What belongs there Why it changes the decision
Logical data Rows and application data before physical overhead. It is the growth base, not the final allocation.
Steady primary Data files, indexes, bloat, workspace, and retained local logs. It represents routine occupied space on the primary.
Primary target Steady primary plus enough headroom to stay below the chosen fill threshold. It is the capacity target for provisioning and expansion.
Recovery and replicas Point-in-time recovery data, extra backup copies, and database replicas. These copies can cost more than the primary allocation.

Write-ahead logs, redo logs, and transaction logs deserve their own assumptions. Their growth follows write activity rather than table size alone, and retention depends on backup policy, archiving, replication health, and recovery objectives. A replica that stops consuming logs can also extend retention unexpectedly, so observed log generation and archive lag are more useful than a generic percentage when those measurements exist.

Backups answer a recovery question, while replicas answer an availability or read-scaling question. Neither is spare primary capacity. Keeping these categories separate prevents a common budget mistake in which a well-sized database volume is surrounded by underfunded backup and regional-copy storage.

Runway estimates are most useful as repeatable planning snapshots. Use recent measured growth, rerun the forecast after schema or retention changes, and compare the predicted threshold month with actual monitoring. A single high-growth month should not automatically become a long-term assumption, but a calm historical average can also hide a known migration, import, or launch.

The result remains a model rather than a vendor quote. Storage allocation rules, autoscaling increments, maximum volume sizes, snapshot billing, compression behavior, and replica architecture differ by engine and service. Capacity should be checked against current provider limits before a purchase or production change.

How to Use This Tool:

Build the forecast from measured logical data and a defensible growth rate. A sizing profile can provide a worked starting point, but production planning should replace every placeholder with observed values.

  1. Select the Database engine, then enter Current logical data, Monthly data growth, and the Forecast horizon.
  2. Set Index overhead, daily WAL / log generation, PITR retention, and the number of Read / HA replicas. These inputs turn logical growth into a wider estate forecast.
  3. Enter Provisioned primary storage and a Planning fill threshold. Use zero allocation only for a new sizing exercise.
  4. Open the advanced inputs when compression, bloat, maintenance workspace, local log retention, extra backup copies, an autoscale ceiling, or storage cost materially affects the plan.
  5. Correct any Database inputs need attention message, then use the forecast primary target and first threshold month as the scheduling signals.

Interpreting Results:

The forecast primary target is the modeled allocation needed at the end of the selected horizon while preserving the fill threshold. It is not the same as projected logical data. Review the storage-layer breakdown before explaining the difference to an operator or budget owner.

  • Threshold now means steady primary use is already at or above the chosen share of current allocation.
  • A positive threshold month is the first whole forecast month whose steady primary use reaches or exceeds the threshold. Plan expansion before that month, not on it.
  • Beyond the horizon means no crossing appeared in the modeled months; it does not guarantee capacity beyond the selected horizon.
  • An autoscale ceiling date is a warning that the primary target reaches or exceeds the entered cap. Autoscaling does not remove the need to monitor runaway growth.
  • Estate cost includes the modeled primary target, backups, and replicas. Compare it with provider billing rules rather than treating it as an invoice.

Technical Details:

The capacity model advances one month at a time from logical data, then derives physical and operational storage for each snapshot. GB and TB use decimal byte factors; GiB, TiB, and PiB use powers of 1024. All capacities are normalized to bytes before the storage layers are combined.

Formula Core

Logical data grows geometrically. This makes a stable percentage comparable across any forecast horizon.

Dm = D0 (1+g100)m

D0 is current logical data, g is monthly growth percent, and m is the whole forecast month. No interpolation is used between monthly checkpoints.

The primary footprint separates compressed data files, compressed indexes, reserves, and locally retained logs before applying headroom.

F = Dm(1+p100)c I = Dm(i100)c Psteady = F+I+B+T+L Ptarget = Psteadyq/100

F is data-file storage, p is the engine page-overhead percentage, c is the primary compression ratio, I is index storage at index percentage i, B is bloat reserve, T is maintenance workspace, L is locally retained log storage, and q is the fill threshold percentage.

Engine assumptions in the database storage model
Engine Page overhead Minimum local log reserve when enabled Maintenance context
PostgreSQL7%1 GiBVACUUM and WAL archive lag
MySQL / InnoDB5%1 GiBPurge lag and binary-log retention
SQL Server4%2 GiBTransaction log and tempdb growth
Generic managed database5%1 GiBStorage alarms and archive lag

These percentages are planning assumptions in the model, not guarantees from the database vendors. Bloat and workspace are based on logical data without applying the primary compression ratio. Local log storage is zero when local retention is zero; otherwise it is the larger of the engine minimum and the daily log estimate scaled to the retained hours.

Recovery storage and replicas are added after primary sizing. This keeps headroom from being counted as live replica data while still including it in the primary target.

K = [F+I+B+(W×r)cb](1+x) R = (F+I+B+L)n E = Ptarget+K+R

K is recovery storage, W is daily log generation, r is backup retention in days, cb is backup compression, and x is the number of extra backup copies. Replica storage R multiplies data files, indexes, bloat, and local logs by replica count n. Estate storage E adds the primary target, recovery storage, and replicas.

Threshold and cost rules

  • The allocation threshold is crossed at the first month where steady primary storage divided by provisioned storage is greater than or equal to the fill threshold.
  • The autoscale ceiling is crossed at the first month where the primary target is greater than or equal to the entered ceiling.
  • A zero provisioned allocation means new sizing and produces no threshold date. A zero autoscale ceiling disables that check.
  • Monthly cost multiplies the full estate in GiB by the entered cost per GiB-month. It does not model tiered prices, requests, transfer, operations, or provider-specific backup discounts.

Accuracy Notes:

This is a deterministic capacity-planning heuristic. Its arithmetic is auditable, but accuracy depends on the quality and stability of the assumptions.

  • Replace estimated percentages with measurements from the same engine, workload, and retention policy whenever possible.
  • Compression, bloat, temporary work, and log generation can change abruptly after schema migrations, bulk loads, maintenance, or workload shifts.
  • Provider snapshots may use incremental storage and billing rules that differ from the modeled full-copy recovery footprint.
  • Confirm current maximum volume size, autoscaling behavior, maintenance requirements, and restore performance with the database service before acting.

References: