Heroku Postgres 17 with the New Upgrade Process: Faster Performance, Easier Upgrade
- Last Updated: May 29, 2025
We’re excited to announce the general availability of Heroku Postgres version 17, packed with new features and enhancements to your database performance. And that’s not all – we’re also introducing a game-changing feature that streamlines your upgrade experience. This new method of version upgrade is now the default, so you can try it to upgrade to Postgres 17!
Postgres 17: Powering your applications with enhanced performance and security
Before we dive into the simplicity of the new upgrade process, let’s talk about what makes PostgreSQL 17 a must-have. This release brings significant improvements that directly translate to better performance and stronger security for your applications.
- Fast Query Performance: Postgres 17 delivers notable enhancements to query optimization. Expect to see faster execution times, especially for complex queries.
IN
clauses with B-tree indexes should see a big improvement, so shouldIS NOT NULL
clauses from improved query planning. Also, the new streaming I/O interface helps optimize sequential scans when reading massive amounts of data from a table. - Improved Write Performance: For applications that heavily rely on write operations, Postgres 17 brings good news. Expect better throughput and reduced latency, ensuring your data is written quickly and efficiently, thanks to improvements with WAL processing.
- JSON Enhancements: Postgres 17 introduces enhanced JSON support, including the JSON_TABLE function to convert JSON data into standard PostgreSQL tables. Additionally, SQL/JSON constructors and query functions simplify working with JSON data.
- Vacuum Memory Optimization: Postgres 17 utilizes a new internal memory structure, leading to faster vacuum speeds and a significant reduction in memory consumption of up to 20 times. This optimization allows your workload to have more memory available since the essential PostgreSQL vacuum process now requires less memory to maintain healthy operations.
- Better Observability: Understanding how your database performs is critical. Postgres 17 brings improvements that allow for better monitoring and observation of your database instances with additional EXPLAIN output, capturing time spent for I/O block reads/writes and SERIALIZE and MEMORY options.
These enhancements, and more, mean your Heroku applications will run smoother, safer, and more efficiently with Postgres 17.
Simplify Postgres upgrades
Upgrading your Postgres database has traditionally been a multi-step process involving creating a follower database, upgrading the follower, stopping your application, waiting for data synchronization, and finally promoting the upgraded database. This process can be time-consuming, error-prone, and disruptive to your application’s availability.
We want to change all that. With the new, now default, upgrade method, we’re simplifying this process significantly. This new feature allows you to upgrade your leader Postgres database directly with a 1-step process, removing many manual steps, by default. Rest assured, we have been using this method internally, and successfully performed upgrades on nearly 20,000 databases so far.
Benefits of the new upgrade method
The new Upgrade leverages the capabilities of Postgres’ pg_upgrade utility to perform the upgrade directly on your existing database, in-place. This eliminates the need for data copying and synchronization, resulting in a faster and more efficient upgrade process.
- Reduced Manual Tasks: The new method skips many manual steps required today to perform an upgrade. The improvements in automation can help reduce human-errors and provide peace of mind during upgrades.
- Reduced Downtime: By eliminating the need for a follower database preparation and data synchronization, this in-place upgrade method significantly reduces the time required to upgrade your database.
- Simplified Process: The streamlined upgrade process eliminates the complexity of multi-step procedures that are prone to human errors, leading to safer maintenance overall.
For example, below diagram compares the typical non-Essential database upgrade process vs the new, in-place upgrade process:
Getting started with the new upgrade
The new Upgrade is available for all Heroku Postgres plans. To use the new process, simply initiate it from your CLI.
First, prepare the upgrade (skip this step if you’re on Essential plan):
heroku pg:upgrade:prepare HEROKU_POSTGRESQL_RED --app example-app
Then run the upgrade when it is ready by running below command, or wait for the next maintenance window.
heroku pg:upgrade:run HEROKU_POSTGRESQL_RED --app example-app
That’s it!
Please refer to our Dev Center article or take a look at Heroku Postgres Upgrade Guide: Simplify Your Move to Version 17 to learn more about the change.
While the new Upgrade offers significant benefits by automating many steps, it’s important to note that if the database is very large, the upgrade duration or follower recreation can take about the same time as the previous, manual approaches.
Although we are changing the default method to use the new method for upgrading going forward, you can always use pg:upgrade
or pg:copy
as documented here.
Conclusion
Heroku Postgres 17 launching with the new upgrade method represents a major step forward in developer experience to manage a database on Heroku. We’re committed to providing you with the tools and features you need to build and run powerful, scalable applications. Our support team is available to assist you should you have any questions or need help. Upgrade to Heroku Postgres 17 today and experience the benefits of the new upgrade method for yourself!
- Originally Published:
- Heroku Postgresmanaged databasepostgresupgrade