OrioleDB is now in Public Beta. You can create OrioleDB projects on the Pro, Team, and Enterprise plans, not only Free. These projects get the same paid features as other Supabase projects, with the exceptions listed below. OrioleDB projects are billed the same as standard Postgres projects.
Public Beta is for testing. We don't recommend OrioleDB for production workloads yet, and it has no SLA.
What's new#
- You can create OrioleDB projects in organizations on paid plans, and upgrade an organization that has OrioleDB projects to a paid plan.
- OrioleDB projects support compute and disk resizing, pause and restore, Postgres version upgrades, read replicas, and scheduled backups.
- New OrioleDB projects run OrioleDB beta18 on Postgres 17.11.
- The dashboard labels OrioleDB as Public Beta.
- The Supabase CLI no longer requires
--experimentalto start a local project with OrioleDB.
How to use it#
You choose OrioleDB when you create a project. You can't add OrioleDB to an existing project or remove it later.
- Create a new Supabase project.
- Expand Advanced Configuration.
- Under Postgres Type, select Postgres with OrioleDB.
- Finish creating the project.
For local development, run:
_10supabase init --use-orioledb
Limitations in Public Beta#
- Point-in-Time Recovery (PITR) isn't available for OrioleDB projects.
- Restoring a backup to a new project isn't available for OrioleDB projects.
- Native B-tree indexes give the best performance. Other index types, including pgvector HNSW indexes, run through an experimental bridge.
- The OrioleDB image doesn't include
plv8,plls,plcoffee, ortimescaledb-apache.
Read the full list of OrioleDB limitations before you choose it for a project.
Existing OrioleDB alpha projects#
We don't move existing alpha projects to the Public Beta. They keep running as they are.
Standalone Postgres + OrioleDB image#
OrioleDB isn't part of the self-hosted Supabase stack yet. This section only applies if you run the standalone supabase/postgres OrioleDB image directly.
The image 17.11.0.001-orioledb and later includes these changes:
- Postgres moves from 17.9 to 17.11 (OrioleDB patch set 20 to 22).
- The OrioleDB extension moves from beta16 to beta18. beta18 bumps the extension SQL version to 1.10 and the WAL format from version 19 to 20. Read the beta18 release notes.
- The image sets
output_plugin_libraries = 'pgoutput, test_decoding, wal2json'. The Postgres 17.11 build for OrioleDB only loads logical decoding output plugins on this list. Add the same line if you maintain your ownpostgresql.conf.
Why we built this#
OrioleDB is an alternative storage engine for Postgres. It replaces the default heap storage through the Table Access Method interface. Old row versions go to an undo log instead of staying in the table, so Postgres reclaims dead rows without VACUUM. OrioleDB also uses 64-bit transaction IDs, which removes transaction ID wraparound.
Your project is still Postgres. You keep the same SQL, the same connection string, and the same Auth, Row Level Security, and client libraries. In a tpcM benchmark on an 8xlarge instance, OrioleDB had 1.8x higher throughput than heap storage.