-
Under 100 GB: Fast and easy. Most queries run instantly if you use basic indexes. Routine maintenance tasks like VACUUM take only seconds.
-
100 GB to 1 TB: The transition zone. Performance depends heavily on your RAM. If your active working data fits inside your server's memory, everything stays fast. If queries must constantly read from the disk, things slow down.
-
1 TB to 10+ TB: Too large for a single unoptimized table. Maintenance tasks like backups, full table scans, and index rebuilds take hours and can lock resources or saturate your CPU.
How to Scale Past the Limit
-
Partitioning: Split large tables by date or region so Postgres only searches the relevant slice of data.
-
Improve Hardware: Upgrade to faster NVMe storage and add more RAM so the kernel can cache more data.
-
Sharding: Split data across multiple independent PostgreSQL clusters if a single machine's CPU and I/O limits are fully maxed out.