| Isolation strength | Strongest. Separate credentials and blast radius per tenant | Logical only. Depends entirely on correct query scoping | Strong logical separation, shared engine and shared failure domain |
|---|
| Infrastructure cost per tenant | Highest. Each tenant carries its own baseline | Lowest. Idle tenants cost close to nothing | Moderate. One engine, many schemas |
|---|
| Schema migration effort | Runs N times. Needs orchestration and partial-failure handling | Single pass across the whole platform | Runs N times but within one engine and one connection pool |
|---|
| Noisy neighbour risk | None between tenants | Real. Needs per-tenant rate limits and query governance | Reduced but not eliminated. Shared CPU, memory and I/O |
|---|
| Per-tenant restore | Trivial. Restore one database | Hard. Requires logical extract and selective replay | Moderate. Schema-level restore is workable |
|---|
| Per-tenant data residency | Natural fit. Place the tenant in its own region | Not possible without a second deployment | Only at the deployment level, not per schema |
|---|
| Scale ceiling | Operationally painful beyond roughly 200 tenants | Thousands of tenants; sharded further when needed | Connection and catalogue limits bite around 500 schemas |
|---|
| Best fit | Regulated sectors, large enterprise accounts, government contracts | Self-serve and mid-market B2B SaaS, internal platforms | Mid-market where tenants demand separation without silo economics |