Database storage refers to the monthly average storage usage, as reported by Postgres. This metric is reported in your project's billing usage and is updated daily.
For an instantaneous live view of the DB storage usage, you can execute in Postgres:
1select sum(pg_database_size(pg_database.datname)) / (1024 * 1024) as db_size_mb 2from pg_database;
This value is also reported in the database settings page.
Database storage management#
Your project will be changed to read-only mode once it reaches 95% of your subscription quota, preventing further writes to your project.
In read-only mode, clients will encounter errors such as
cannot execute INSERT in a read-only transaction.
Regular operation (read-write mode) is automatically re-enabled once database storage usage falls under 95%.
If you are on Pro or Enterprise, database storage expands automatically, however you may also encounter this error if fill the database faster than it can expand.
Supabase uses network-attached storage, which balances performance with scalability. Pro projects can store up to 1024TB. If you intend to grow beyond this, reach out to our team to learn more about our Enterprise tier.
Increasing available database storage#
Upgrade to the Pro or Enterprise plan to increase your storage quota.
Delete data from your project's database to lower its disk usage. If your database is already in read-only mode, run the following command to change the transaction mode to read-write for your session:
1SET default_transaction_read_only = 'off';
This allows you to delete data from within the session.
Postgres does not immediately reclaim the physical space used by dead tuples (i.e., deleted rows) in the DB. Instead, they are internally marked as removed until a vacuum operation is executed. As a result, deleting data from your database may not immediately reduce the reported disk usage.
Vacuum operations can temporarily increase resource utilization, which may adversely impact the observed performance of your project until the maintenance is completed.
Supabase projects have automatic vacuuming enabled, which ensures that these operations are performed regularly to keep the database healthy and performant. However, it can be necessary to either fine-tune the autovacuum parameters, or manually initiate vacuum operations. For example, running a manual vacuum after deleting large amounts of data from your DB could help reduce the reported disk usage by Postgres.