One of the benefits of consuming a database through Heroku Postgres is that we are continually improving the service. This benefit is compounded by the fact that our service is based on PostgreSQL, a vibrant and active open source project. The release of PostgreSQL 9.1 had added a number of feature, performance and reliability improvements. These are available today with our beta support for PostgreSQL 9.1.
We have been testing and watching PostgreSQL 9.1 since it became available in September. With the recent release of 9.1.2, it is now ready for prime time on Heroku. Test out PG 9.1 right now with:
$ heroku addons:add heroku-postgresql version=9.1
PostgreSQL 9.1 can also be selected when provisioning a database through our web-based control surface.
Although PostgreSQL 9.1 has been tested internally by Heroku for some time, there is always a risk that beta services will have unforeseen problems. Please be extremely conservative in moving production applications.
Performance Improvements
Most Heroku Postgres users will see an immediate performance boost upon upgrading to PostgreSQL 9.1. Optimizations in file system writes will result in reduced latency on typical production database loads.
In addition, unlogged tables create a variety of interesting new use cases. Unlogged tables are not written to disk and offer extremely fast performance (up to 5x write speeds in some cases). They are well suited to ephemeral data such as work queues. Please note that unlogged tables are not replicated to followers. The data in unlogged tables does not survive a database restart or failure.
Upgrade Path and Roadmap
PostgreSQL 9.1 is available in beta as an option on all new databases. If you test it, please send feedback to data-feedback@heroku.com.
Once PostgreSQL 9.1 has been run for a sufficient amount of time with a variety of customer databases, it will be placed into general availability and will become the default for all new databases.
Existing users of Heroku Postgres will continue to run PostgreSQL 9.0. As a policy, we do not upgrade running databases unless there is a security vulnerability. Existing databases can be upgraded by capturing a snapshot of the database and restoring it to a new database.