Photo credit: Kenrick Mills
From time to time I need to check whether a managed Postgres provider supports auto_explain, and if so, which auto_explain parameters they support. Since it can be time-consuming to set up and test each of these, I wanted to create a reference for myself, and thought it might also be of interest to others.
I did my testing over the past week, but plan to keep this up to date. If you notice a mistake, or that a provider changes their support, please do let me know.
What is auto_explain?
Firstly, in case you’re not familiar, auto_explain is an extension that ships with PostgreSQL as a contrib module, allowing you to log the execution plans for queries that ran on your database. This is particularly useful for queries that are intermittently slow. We have a guide for configuring auto_explain, in case that’s of interest, and also recorded a podcast episode about it, if you would like a more casual introduction.
Overview
Here is a roundup of the providers I’ve looked into so far, with a top level summary of whether they support auto_explain, and if so how many of its parameters.
| Provider | auto_explain | Parameters |
|---|---|---|
| Amazon RDS | Yes | 9/13 |
| Google Cloud SQL | Yes | 12/13 |
| Azure Database | Yes | 12/13 |
| Crunchy Bridge | Yes | 9/13 |
| Timescale Cloud | Yes | 13/13 |
| Aiven | No | |
| Digital Ocean | No | |
| EDB Big Animal | Yes | 13/13 |
| Heroku | Yes | 6/13 |
| Neon | No | |
| ScaleGrid | On by default | 4/13 |
| Supabase | No | |
| PlanetScale Postgres | Yes | 11/13 |
Any corrections, additions, or updates would be most welcome. Below, I’ve documented more information for each provider, including which parameters they allow to be configured.
Amazon RDS
Good news, auto_explain is supported in Amazon RDS. Most parameters are available to configure, except for the newer ones, as well as log_level.
| Parameter | Amazon RDS |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Not configurable |
| auto_explain.log_wal | Not configurable |
| auto_explain.log_level | Not configurable |
| auto_explain.log_parameter_max_length | Not configurable |
Amazon’s Aurora PostgreSQL also supports auto_explain with the same parameters, plus a proprietary parameter auto_explain.hashes.
Google Cloud SQL
Good news, auto_explain is supported in Google Cloud SQL. All parameters are available to configure, except for the not-super-useful log_parameter_max_length.
| Parameter | Google Cloud SQL |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Configurable |
| auto_explain.log_wal | Configurable |
| auto_explain.log_level | Configurable |
| auto_explain.log_parameter_max_length | Not configurable |
Google’s AlloyDB also supports auto_explain with the same parameters.
Azure Database
Good news, auto_explain is supported in Azure Database. All parameters are available to configure, except for the not-super-useful log_parameter_max_length.
| Parameter | Azure Database |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Configurable |
| auto_explain.log_wal | Configurable |
| auto_explain.log_level | Configurable |
| auto_explain.log_parameter_max_length | Not configurable |
However it seems that auto_explain is not supported on Azure Cosmos DB.
Crunchy Bridge
Good news, auto_explain is supported in Crunchy Bridge. Most parameters are available to configure, except for the newer ones, as well as log_level.
| Parameter | Crunchy Bridge |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Not configurable |
| auto_explain.log_wal | Not configurable |
| auto_explain.log_level | Not configurable |
| auto_explain.log_parameter_max_length | Not configurable |
Timescale Cloud
Great news, auto_explain is supported in Timescale Cloud, and every parameter is available to configure!
| Parameter | Timescale Cloud |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Configurable |
| auto_explain.log_wal | Configurable |
| auto_explain.log_level | Configurable |
| auto_explain.log_parameter_max_length | Configurable |
Aiven
Unfortunately auto_explain is not supported in Aiven for PostgreSQL, at least without the aiven_extras extension (and even then only on a per session basis).
Digital Ocean
Unfortunately auto_explain is not supported in Digital Ocean.
EDB Big Animal
Great news, auto_explain is supported in Big Animal, and every parameter is available to configure!
| Parameter | EDB Big Animal |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_settings | Configurable |
| auto_explain.log_wal | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_level | Configurable |
| auto_explain.log_parameter_max_length | Configurable |
Heroku
Good news, auto_explain is supported in Heroku Postgres. A subset of the parameters are configurable.
| Parameter | Heroku |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Not configurable |
| auto_explain.log_format | Not configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Not configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Not configurable |
| auto_explain.log_wal | Not configurable |
| auto_explain.log_level | Not configurable |
| auto_explain.log_parameter_max_length | Not configurable |
Neon
Unfortunately auto_explain is not supported in Neon.
ScaleGrid
Good news, auto_explain is supported in ScaleGrid, and it is even on by default. However, while several parameters are on by default, most are not configurable.
| Parameter | ScaleGrid (default) |
|---|---|
| auto_explain.log_min_duration | Configurable (100ms) |
| auto_explain.sample_rate | Not configurable (1.0) |
| auto_explain.log_format | Not configurable (json) |
| auto_explain.log_analyze | Not configurable (on) |
| auto_explain.log_timing | Not configurable (on) |
| auto_explain.log_buffers | Configurable (on) |
| auto_explain.log_verbose | Not configurable (on) |
| auto_explain.log_triggers | Not configurable (off) |
| auto_explain.log_nested_statements | Not configurable (off) |
| auto_explain.log_settings | Not configurable (off) |
| auto_explain.log_wal | Not configurable (off) |
| auto_explain.log_level | Not configurable (log) |
| auto_explain.log_parameter_max_length | Not configurable |
Supabase
Unfortunately auto_explain is not yet supported in Supabase.
PlanetScale Postgres
Good news, auto_explain is now supported in PlanetScale Postgres. Almost all of the parameters are configurable.
| Parameter | PlanetScale |
|---|---|
| auto_explain.log_min_duration | Configurable |
| auto_explain.sample_rate | Configurable |
| auto_explain.log_format | Configurable |
| auto_explain.log_analyze | Configurable |
| auto_explain.log_timing | Configurable |
| auto_explain.log_buffers | Configurable |
| auto_explain.log_verbose | Configurable |
| auto_explain.log_triggers | Configurable |
| auto_explain.log_nested_statements | Configurable |
| auto_explain.log_settings | Not configurable |
| auto_explain.log_wal | Configurable |
| auto_explain.log_level | Configurable |
| auto_explain.log_parameter_max_length | Not configurable |
To conclude
Sadly, despite auto_explain being in contrib, a decent number of managed services don’t yet support it. However a whole bunch do, many of which also offer good coverage of parameters.
Hopefully in time support will grow. If you notice a provider that has changed their support, or you use one that we haven’t covered above, it’d be great to hear from you.
Last updated: June 2026
