A database quota looks like an arbitrary line drawn in the sand until a plugin actually hits it — and then it stops looking arbitrary at all, because the two limits that make it up protect two completely different things.
Two limits, two different problems
Storage and connections fail for unrelated reasons. Storage is straightforward: a logging plugin that never prunes its own history grows without bound, one row at a time, until it hits the ceiling. Connections are about concurrency, not size — every open connection holds a thread and a set of buffers on the database server for as long as it stays open, and a database server on shared infrastructure has to budget that across every tenant using it, not just yours.
A plugin that opens a new connection per query instead of reusing a pool can exhaust the connection limit long before it comes anywhere near the storage one — which is why «my database is small but plugins can't connect» is a real, distinct failure from «my database is full».
Reading which limit you hit
| Symptom | Limit |
|---|---|
| Plugin logs a disk-full or insert error | Storage (500 MB) |
| Plugin logs a «too many connections» error | Connections (150) |
| Everything works, then intermittently refuses new queries under load | Connections — a pooling problem, not a size problem |
Keeping a logging plugin inside quota
- Find the purge or retention setting
Block loggers like CoreProtect exist specifically to be pruned — the setting is usually called retention, purge age, or history days, and it is the single largest lever on storage use.
- Run the purge once manually before relying on the schedule
A database that has been growing unpruned for months can take a real purge pass to bring back under quota; the recurring job alone will not catch up instantly.
- Check the plugin is not opening a connection per query
Most modern plugins use a connection pool by default. An older or poorly maintained one that does not is the usual cause of hitting the connection limit on a database that is nowhere near full.
Unlike the game server's own memory, which is dedicated to your container, the MySQL server behind it serves every tenant's databases from shared capacity. A quota-less database is not a convenience for one server — it is a way for one misconfigured plugin to degrade the database for everyone on the same instance.