Skip Navigation
Show nav
Heroku Dev Center Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
Heroku Dev Center Dev Center
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • Documentation
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log in or Sign up
View categories

Categories

  • Heroku Architecture
    • Compute (Dynos)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
    • Buildpacks
  • Developer Tools
    • AI Tools
    • Command Line
    • Heroku VS Code Extension
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery & Integration (Heroku Flow)
    • Continuous Integration
  • Language Support
    • Node.js
      • Node.js Behavior in Heroku
      • Working with Node.js
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails Support
        • Working with Rails
      • Working with Bundler
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Background Jobs in Python
      • Python Behavior in Heroku
      • Working with Django
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Working with Maven
      • Working with Spring Boot
      • Troubleshooting Java Apps
    • PHP
      • Working with PHP
      • PHP Behavior in Heroku
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Getting Started
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
      • Migrating to Heroku Postgres
      • Heroku Postgres Advanced (Limited GA)
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Inference Essentials
    • Inference API
    • Inference Quick Start Guides
    • AI Models
    • Tool Use
    • AI Integrations
    • Vector Database
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
      • Single Sign-on (SSO)
    • Private Spaces
      • Infrastructure Networking
    • Compliance
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Teams
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Integrating with Salesforce
    • Heroku AppLink
      • Working with Heroku AppLink
      • Heroku AppLink Reference
      • Getting Started with Heroku AppLink
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
    • Other Salesforce Integrations
  • Databases & Data Management
  • Heroku Postgres
  • Postgres Basics
  • Choosing the Right Heroku Postgres Plan

Choosing the Right Heroku Postgres Plan

English — 日本語に切り替える

Table of Contents [expand]

  • Plan Tiers
  • Essential Tier
  • Advanced Tier
  • Standard Tier
  • Premium Tier
  • Private and Shield Tiers
  • Cache Size
  • Changing Heroku Postgres Plans

Last updated May 19, 2026

Heroku Postgres offers a wide spectrum of plans to serve use cases that range in size from personal blogs to large-dataset, high-transaction applications. Choosing the right plan depends on your app’s specific usage characteristics, including requirements for availability and uptime.

Plan Tiers

Heroku Postgres Advanced is in limited general availability. To start creating and using Advanced databases, open a ticket with Heroku Support to request access. Subscribe to our changelog to stay informed of when Heroku Postgres Advanced is generally available.

Heroku Postgres’s many plans are divided into six high-level tiers. The primary difference between each tier is the amount of tolerated monthly downtime for databases in the tier. The six tiers are:

  • Essential Tier — For apps that can tolerate up to 4 hours of downtime per month
  • Advanced Tier (Limited GA)
  • Standard Tier — For apps that can tolerate up to 1 hour of downtime per month
  • Premium Tier — For apps that can tolerate up to 15 minutes of downtime per month
  • Private Tier — For verified Heroku Teams and in Heroku Enterprise customers
  • Shield Tier — For verified Heroku Teams and in Heroku Enterprise customers who need compliance-capable databases

Here’s a breakdown of the differences between the tiers:

Heroku Postgres Tier Downtime Tolerance Fork Follow Rollback HA Disk Encryption
Essential < 4-hr downtime per mo. No No No No Yes
Advanced (Limited GA) Yes Yes Yes Yes Yes
Standard (Classic) < 1-hr downtime per mo. Yes Yes 4 days No Yes
Premium (Classic) < 15-min downtime per mo. Yes Yes 1 week Yes Yes
Private (Classic) < 15-min downtime per mo. Yes Yes 1 week Yes Yes
Shield (Classic) < 15-min downtime per mo. Yes Yes 1 week Yes Yes

Downtime tolerance is based on a 30-day month.

Shared Features

All Heroku Postgres plan tiers share the following features:

  • Fully managed database service with automatic health checks
  • Write-ahead log (WAL) off-premise storage every 60 seconds, ensuring minimal data loss if there’s a catastrophic failure
  • Daily logical database backups with PG Backups (optional but free)
  • Dataclips for easy and secure sharing of data and queries
  • SSL-protected psql/libpq access
  • Running Postgres 15, 16, 17
  • Postgres extensions
  • A full-featured web UI from the Heroku Dashboard
  • Automatic encryption-at-rest of all data written to disk

Dataclips and daily logical backups aren’t available for Shield-tier database plans.

Heroku PGBackups isn’t supported on Heroku Postgres Advanced (Limited GA). Subscribe to our changelog to stay informed of when this feature is available for Advanced databases.

Essential Tier

The Essential tier includes the essential-0, essential-1, and essential-2 plans. This tier has the following limitations:

  • No fork and follow support: Fork and follow, used to create replica databases and leader-follower setups, aren’t supported.
  • No Expensive Queries support
  • Expected uptime of 99.5% each month
  • Unannounced maintenance and automatic Postgres version upgrades
  • No Postgres logs
  • No additional credentials

If you get the error The authentication type 10 is not supported. or SCRAM authentication is not supported by this driver. while connecting to your Essential database, see this Help article.

The plans for the Essentials tier are:

Plan Name Provisioning Name Limits Storage Connection Limit
Essential-0 heroku-postgresql:essential-0 4,000 tables 1 GB 20
Essential-1 heroku-postgresql:essential-1 4,000 tables 10 GB 20
Essential-2 heroku-postgresql:essential-2 4,000 tables 32 GB 40

Advanced Tier

Heroku Postgres Advanced is in limited general availability. To start creating and using Advanced databases, open a ticket with Heroku Support to request access. Subscribe to our changelog to stay informed of when Heroku Postgres Advanced is generally available.

The Advanced tier offers default plan levels that you can customize.

All Advanced databases:

  • Include 100 GB of storage per cluster with a maximum storage of 100 TB. Contact Heroku Support if you need more than the maximum storage. See Storage Quotas and Thresholds for more information.
  • Connection limits on Heroku Postgres Advanced databases are per instance on follower pools. See Connection Limits for more information.
  • Include unlimited IOPS.
  • Include a table limit of up to 4,000 tables.
  • Support Private and Shield Spaces. Default plan levels are created on the Common Runtime.
  • Support high availability. HA is enabled by default on the leader instance pool.
  • Support scaling follower pools. Default plan levels are created without follower pools.

Plan Levels

The Advanced database plan levels are:

Plan Level Provisioning Name RAM Size vCPU
4G-Performance --level 4G-Performance 4 GB 2
8G-Performance --level 8G-Performance 8 GB 2
16G-Performance --level 16G-Performance 16 GB 2
32G-Performance --level 32G-Performance 32 GB 4
64G-Performance --level 64G-Performance 64 GB 8
128G-Performance --level 128G-Performance 128 GB 16
256G-Performance --level 256G-Performance 256 GB 32
384G-Performance --level 384G-Performance 384 GB 48
512G-Performance --level 512G-Performance 512 GB 64
768G-Performance --level768G-Performance 768 GB 96
1536G-Performance --level 1536G-Performance 1536 GB 192

Standard Tier

The Standard tier is designed for applications that can tolerate up to 1 hour of downtime in any given month. All Standard-tier databases include:

  • Increasing amounts of in-memory cache
  • Fork and follow support
  • Rollback up to 4 days
  • Database metrics published to application log stream for further analysis
  • Priority service restoration on disruptions
  • Credential Management

The plans for the Standard tier are:

Plan Name Provisioning Name RAM Size Storage Connection Limit
Standard-0 heroku-postgresql:standard-0 4 GB 64 GB 200
Standard-2 heroku-postgresql:standard-2 8 GB 256 GB 500
Standard-3 heroku-postgresql:standard-3 15 GB 512 GB 500
Standard-4 heroku-postgresql:standard-4 30 GB 768 GB 500
Standard-5 heroku-postgresql:standard-5 61 GB 1 TB 500
Standard-6 heroku-postgresql:standard-6 122 GB 1.5 TB 500
Standard-7 heroku-postgresql:standard-7 244 GB 2 TB 500
Standard-8 heroku-postgresql:standard-8 488 GB 3 TB 500
Standard-9 heroku-postgresql:standard-9 768 GB 4 TB 500
Standard-10 heroku-postgresql:standard-10 1 TB 8 TB 500

Premium Tier

The Premium tier is designed for applications that can tolerate up to 15 minutes of downtime in any given month. All Premium tier databases include:

  • Increasing amounts of in-memory cache
  • Fork and follow support
  • Rollback up to 7 days
  • Database metrics published to application log stream for further analysis
  • Priority service restoration on disruptions
  • Credential Management
  • High availability

The plans for the Premium tier are:

Plan Name Provisioning Name RAM Size Storage Connection Limit
Premium-0 heroku-postgresql:premium-0 4 GB 64 GB 200
Premium-2 heroku-postgresql:premium-2 8 GB 256 GB 500
Premium-3 heroku-postgresql:premium-3 15 GB 512 GB 500
Premium-4 heroku-postgresql:premium-4 30 GB 768 GB 500
Premium-5 heroku-postgresql:premium-5 61 GB 1 TB 500
Premium-6 heroku-postgresql:premium-6 122 GB 1.5 TB 500
Premium-L-6 heroku-postgresql:premium-l-6 122 GB 2 TB 500
Premium-XL-6 heroku-postgresql:premium-xl-6 122 GB 3 TB 500
Premium-7 heroku-postgresql:premium-7 244 GB 2 TB 500
Premium-8 heroku-postgresql:premium-8 488 GB 3 TB 500
Premium-9 heroku-postgresql:premium-9 768 GB 4 TB 500
Premium-L-9 heroku-postgresql:premium-l-9 768 GB 5 TB 500
Premium-XL-9 heroku-postgresql:premium-xl-9 768 GB 6 TB 500
Premium-10 heroku-postgresql:premium-10 1 TB 8 TB 500

Private and Shield Tiers

Heroku offers Heroku Postgres in Private Spaces for verified Heroku Teams and Heroku Enterprise customers. Additionally, Postgres Shield plans are available for customers who need compliance-capable databases. For details on our Private and Shield plans, see the Heroku Postgres and Private Spaces article.

Cache Size

For databases that aren’t in the Essential tier, RAM size indicates the total amount of System Memory on the underlying instance’s hardware, most of which is given to Postgres and used for caching. Although a small amount of RAM is used for managing connections and other tasks, Postgres takes advantage of almost all of this RAM for its cache. Learn more about how caching works in this article.

Postgres constantly manages the cache of your data: rows you’ve written, indexes you’ve made, and metadata Postgres keeps. When the data required for a query is contained entirely in the cache, performance is fast. Queries made from cached data are often 100-1000x faster than queries made from the full dataset.

99% or more of queries served from well-engineered, high-performance web applications are served from cache.

Conversely, having to fall back to disk is at least an order of magnitude slower. Additionally, columns with large data types (for example, large text columns) are stored out-of-line via TOAST, and accessing large amounts of TOASTed data can be slow.

General Guidelines

Access patterns vary greatly from application to application. Many applications access only a small, recently modified portion of their overall data. Postgres can always keep that portion in its cache as time goes on, and consequently these applications can perform well on smaller plans.

Applications that frequently access all of their data don’t have this luxury. These apps can observe dramatic increases in performance by ensuring that their entire dataset fits in memory. To determine the total size of your dataset, use the heroku pg:info command and look for the Data Size row:

$ heroku pg:info
=== HEROKU_POSTGRESQL_CHARCOAL_URL (DATABASE_URL)
Plan:        Standard 0
Status:      Available
Data Size:   9.4 MB
...

Although a crude measure, choosing a plan that has at least as much in-memory cache available as the size of your total dataset ensures high cache ratios. However, you eventually reach the point where you have more data than the largest plan, and you have to shard. Plan ahead for sharding: it takes a long time to execute a sharding strategy.

Determining Required Cache Size

There’s no substitute for observing the database demands of your application with live traffic to determine the appropriate cache size. Ideally, your cache hit ratio is in the 99%+ range. Uncommon queries require less than 100 ms and common ones less than 10 ms.

This blog post includes a deeper discussion of Postgres performance concerns and techniques.

To measure the cache hit ratio for tables:

SELECT
    'cache hit rate' AS name,
     sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) AS ratio
FROM pg_statio_user_tables;

Or the cache hit ratio for indexes:

SELECT
    'index hit rate' AS name,
    (sum(idx_blks_hit)) / sum(idx_blks_hit + idx_blks_read) AS ratio
FROM pg_statio_user_indexes

You can install the pg extras plugin and then simply run heroku pg:cache-hit.

Both queries indicate a ratio near 0.99:

heap_read | heap_hit |         ratio
-----------+----------+------------------------
       171 |   503551 | 0.99966041175571094090

When the cache hit ratio begins to decrease, upgrading your database generally brings the ratio back up to 99%.

Changing Heroku Postgres Plans

You can change the plan for a database after it has been created. To change plans on classic Postgres databases, see Changing the Plan or Infrastructure of a Heroku Postgres Database.

To change the configuration of an Advanced database after it’s been created, see Managing Instance Pools on Heroku Postgres Advanced.

Feedback

Log in to submit feedback.

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2026 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices