From today, new Supabase projects will be on a version of Supabase Postgres that runs on Postgres 13.3. This won't be the only big change however in this version. Here are a few other things that have changed under the hood.
PostgreSQL version 13.3#
We've jumped from PostgreSQL 12.0 to PostgreSQL version 13.3, introducing significant performance improvements and some great new functionality. Some changes include:
- native UUID generation (!) using
gen_random_uuid - a new JSONB datetime function
- vacuuming indexes in parallel
- incremental sorting
- smaller btree indexes
- improvements to extended statistics
Supabase Versioning#
Our Postgres repo has jumped from 0.15.0 to 13.3.0. From now on, both major and minor versions of
Supabase Postgres will follow PostgreSQL. This makes it much easier to ascertain what version of PostgreSQL is installed. In the situation wherein
there are no updates to PostgreSQL in between releases, the patch version will be bumped up.
Large System Extensions (LSE) enabled for ARM instances#
Disclaimer for self-hosting: This is not available for x86 instances. All instances on the Supabase platform have this enabled by default.
The recent wave of Graviton 2 instances from AWS introduces support for the Large System Extensions (LSE). This looks to greatly enhance application performance through atomics, and improves locking and synchronization performance across large systems.
Preliminary Benchmarks#
Below is a comparison between the ARM versions of Supabase Postgres 0.15.0 and 13.3.0. Both are using m6gd.8xlarge instances
and follow the PostgreSQL configuration here.
The following configuration of pgbench was used.
Running the benchmark with 2, 4, 8, 16, 64, and 128 clients:
Ubuntu 20.04#
We have taken the opportunity to upgrade new projects from Ubuntu 18.04 to Ubuntu 20.04. A switch to Ubuntu 20.04 guarantees that the underlying OS of Supabase Postgres is supported by the Canonical team up until the year 2025 (2023 for Ubuntu 18.04).
Built from source#
Driven by the need to enable LSE, the underlying PostgreSQL in this version was built from the ground up instead of downloaded binaries. Supabase Postgres can now be easily upgraded whenever a new major or minor version of PostgreSQL is released. When PostgreSQL 14 comes out, expect Supabase Postgres 14 to quickly follow.
New Extensions#
pgRouting#
An extension of PostGIS, pgRouting provides geospatial routing functionality.
More information can be found here.
wal2json#
Converts WAL output into clean and organized JSON objects.
More information can be found here.
Enhanced security#
To help combat brute force attacks, fail2ban has now been configured to protect direct connections to Postgres. This applies to both
ports 5432 (PostgreSQL) and 6543 (PgBouncer).
IPs get banned for 10 minutes after three failed attempts, and we'll continue to fine-tune and improve the protections applied to the database servers based on evolving traffic patterns.
PostgreSQL bundles#
[Coming Soon]
Last but not the least, we're diversifying the images of Supabase Postgres available in the AWS and Digital Ocean Marketplaces.
Instead of a single option, we'll soon offer four configurations of PostgreSQL. Each bundle offers functionality for common use-cases. For example, if you're using Postgres with Serverless functions, you might want to run the PgBouncer bundle. If you want an HTTP API with your Postgres offering you might want to run the PostgREST bundle.
Name | PostgreSQL | PgBouncer | PostgREST |
|---|---|---|---|
| Supabase Postgres | ✅ | ||
| Supabase Postgres: PgBouncer Bundle | ✅ | ✅ | |
| Supabase Postgres: PostgREST Bundle | ✅ | ✅ | |
| Supabase Postgres: Complete Bundle | ✅ | ✅ | ✅ |
Each offering will be available for both the x86 and arm architectures.
Try PostgreSQL 13#
Try the new features of PostgreSQL 13.3 today by creating a new project on Supabase.