Deep-dive on the Next Gen Platform. Join the Webinar!

Skip Navigation
Show nav
Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
  • 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 inorSign up
Hide 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
  • Developer 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
      • Working with Node.js
      • Troubleshooting Node.js Apps
      • Node.js Behavior in Heroku
    • Ruby
      • Rails Support
      • 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
      • PHP Behavior in Heroku
      • Working with PHP
    • 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 Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Working with AI
  • 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
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
  • 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
  • Databases & Data Management
  • Heroku Postgres
  • Postgres Performance
  • Heroku Postgres Production Tier Technical Characterization

Heroku Postgres Production Tier Technical Characterization

English — 日本語に切り替える

Last updated November 27, 2024

Table of Contents

  • Performance Characteristics
  • Burstable vCPU Performance
  • Architecture, vCPU, RAM, and I/O
  • Data Encryption

The information in this document is subject to change as Heroku adapts the service to better handle customer database workloads.

Heroku Postgres plans offer different performance characteristics based on their CPU, RAM, and I/O architectures. This article provides a technical description of the implementation of Standard-tier and higher plans, along with important performance characteristics for each plan.

Performance Characteristics

The following table outlines Heroku Postgres Standard-tier and higher plans, along with relevant specifications about the underlying hardware:

Plan vCPU RAM PIOPs Connection Limit Disk Size Burstable Disk/vCPU
standard-0 premium-0 private-0 shield-0 2 4 GB 3000 120 64 GB no
standard-2 premium-2 private-2 shield-2 2 8 GB 3000 400 256 GB no
standard-3 premium-3 private-3 shield-3 2 15.25 GB 3000 500 512 GB no
standard-4 premium-4 private-4 shield-4 4 30.5 GB 3000 500 768 GB no
standard-5 premium-5 private-5 shield-5 8 61 GB 4000 500 1 TB no
standard-6 premium-6 private-6 shield-6 16 122 GB 6000 500 1.5 TB no
premium-l-6 private-l-6 shield-l-6 16 122 GB 6000 500 2 TB no
premium-xl-6 private-xl-6 shield-xl-6 16 122 GB 6000 500 3 TB no
standard-7 premium-7 private-7 shield-7 32 244 GB 9000 500 2 TB no
standard-8 premium-8 private-8 shield-8 64 488 GB 12000 500 3 TB no
standard-9 premium-9 private-9 shield-9 96 768 GB 16000 500 4 TB no
premium-l-9 private-l-9 shield-l-9 96 768 GB 16000 500 5 TB no
premium-xl-9 private-xl-9 shield-xl-9 96 768 GB 16000 500 6 TB no
standard-10 premium-10 private-10 shield-10 128 1 TB 32000 500 8 TB no

As of June 29, 2023, we’ve migrated all production-tier databases (Standard, Premium, Private, and Shield) away from burstable disk. All production-tier databases have a baseline performance starting at 3000 PIOPs.

Run the pg:info command to check whether your Postgres database has an upgrade available:

$ heroku pg:info
=== HEROKU_POSTGRESQL_RED
Plan         Standard 4
Status       available

All Heroku Postgres plans aside from the Essential tier are single-tenant plans. A customer’s database and related management software are the sole residents of resources on the instance, offering more predictable performance. However, virtualized infrastructure is still subject to some resource contention, and minor performance variations are expected.

Burstable vCPU Performance

All Heroku Postgres plans come with a baseline level of performance, but standard-0, premium-0, private-0, and shield-0 plans are able to burst past that baseline. Burstable performance plans allow each database to run in isolation as a single-tenant instance. This means that when your database is provisioned, no other customer is running on the same server. When your database bursts for an extended time, it’s brought back to the original baseline level of performance. If a consistent level of performance is needed, a non-burstable Heroku Postgres plan provides fixed levels of performance.

The plan type determines the baseline level of performance:

Plan Load Average
standard-0 premium-0 private-0 shield-0 0.2

Each of these plans can burst past these load averages for a short amount of time. If the database has a sustained load over those amounts, however, it’s brought back to the baseline. Load averages can be found in the Heroku Postgres Server metrics, which are part of your application’s logs.

Architecture, vCPU, RAM, and I/O

All Heroku Postgres plans run on 64-bit architectures. This ensures both high performance for internal Postgres operations and interoperability with other features like Forks and Followers across all Standard-tier and higher plans.

vCPU indicates the number of virtual processors on the underlying instance. A larger vCPU count provides higher performance on the virtual server or instance.

RAM is the approximate amount of memory used for data caching. An in-depth discussion on Postgres caching can be found in Understanding Heroku Postgres Data Caching.

All instances are backed by EBS-optimized instances where EBS disks with provisioned IOPs are attached. PIOPs are a measure of how many I/O operations the underlying disks can perform per second. The number of IOPs provisioned for each plan determines its I/O throughput. On write-heavy applications, I/O can be a significant bottleneck, but on read-heavy ones, your hot dataset fits in RAM and can therefore perform well with lower IOPs values.

Data Encryption

All plans are encrypted at rest with AES-256, block-level storage encryption. Amazon manages the keys, and individual volume keys are stable for the lifetime of the volume. You can find more details about EBS encryption here. Heroku doesn’t encrypt anything for you at the Postgres level, so if you wish to encrypt, you can use the PGCrypto extension for your own encryption.

All backup files that are taken using Heroku PGBackups are stored in an encrypted S3 bucket in the US region.

Keep reading

  • Postgres Performance

Feedback

Log in to submit feedback.

Understanding Heroku Postgres Data Caching Increasing Performance of Large Tables on Heroku Postgres Using Partitioning

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
  • heroku.com
  • Terms of Service
  • Privacy (日本語)
  • Cookies
  • Cookie Preferences
  • Your Privacy Choices
  • © 2025 Salesforce.com