Every instance in one table, with the parameter values its memory implies.
81 instances shown
| Instance | vCPU | Memory | GiB / vCPU | max_connections | shared_buffers | effective_cache_size |
|---|---|---|---|---|---|---|
| db.t3.micro | 2 | 1 | 0.5 | 103 | 256 MiB | 768 MiB |
| db.t4g.micro | 2 | 1 | 0.5 | 103 | 256 MiB | 768 MiB |
| db.t3.small | 2 | 2 | 1 | 208 | 512 MiB | 1.5 GiB |
| db.t4g.small | 2 | 2 | 1 | 208 | 512 MiB | 1.5 GiB |
| db.t3.medium | 2 | 4 | 2 | 415 | 1 GiB | 3 GiB |
| db.t4g.medium | 2 | 4 | 2 | 415 | 1 GiB | 3 GiB |
| db.m5.large | 2 | 8 | 4 | 831 | 2 GiB | 6 GiB |
| db.m6g.large | 2 | 8 | 4 | 831 | 2 GiB | 6 GiB |
| db.m7g.large | 2 | 8 | 4 | 831 | 2 GiB | 6 GiB |
| db.m8g.large | 2 | 8 | 4 | 831 | 2 GiB | 6 GiB |
| db.t3.large | 2 | 8 | 4 | 831 | 2 GiB | 6 GiB |
| db.t4g.large | 2 | 8 | 4 | 831 | 2 GiB | 6 GiB |
| db.r5.large | 2 | 16 | 8 | 1,662 | 4 GiB | 12 GiB |
| db.r6g.large | 2 | 16 | 8 | 1,662 | 4 GiB | 12 GiB |
| db.r7g.large | 2 | 16 | 8 | 1,662 | 4 GiB | 12 GiB |
| db.r8g.large | 2 | 16 | 8 | 1,662 | 4 GiB | 12 GiB |
| db.x2g.large | 2 | 32 | 16 | 3,324 | 8 GiB | 24 GiB |
| db.m5.xlarge | 4 | 16 | 4 | 1,662 | 4 GiB | 12 GiB |
| db.m6g.xlarge | 4 | 16 | 4 | 1,662 | 4 GiB | 12 GiB |
| db.m7g.xlarge | 4 | 16 | 4 | 1,662 | 4 GiB | 12 GiB |
| db.m8g.xlarge | 4 | 16 | 4 | 1,662 | 4 GiB | 12 GiB |
| db.t3.xlarge | 4 | 16 | 4 | 1,662 | 4 GiB | 12 GiB |
| db.t4g.xlarge | 4 | 16 | 4 | 1,662 | 4 GiB | 12 GiB |
| db.r5.xlarge | 4 | 32 | 8 | 3,324 | 8 GiB | 24 GiB |
| db.r6g.xlarge | 4 | 32 | 8 | 3,324 | 8 GiB | 24 GiB |
| db.r7g.xlarge | 4 | 32 | 8 | 3,324 | 8 GiB | 24 GiB |
| db.r8g.xlarge | 4 | 32 | 8 | 3,324 | 8 GiB | 24 GiB |
| db.x2g.xlarge | 4 | 64 | 16 | 5,000 | 16 GiB | 48 GiB |
| db.m5.2xlarge | 8 | 32 | 4 | 3,324 | 8 GiB | 24 GiB |
| db.m6g.2xlarge | 8 | 32 | 4 | 3,324 | 8 GiB | 24 GiB |
| db.m7g.2xlarge | 8 | 32 | 4 | 3,324 | 8 GiB | 24 GiB |
| db.m8g.2xlarge | 8 | 32 | 4 | 3,324 | 8 GiB | 24 GiB |
| db.t3.2xlarge | 8 | 32 | 4 | 3,324 | 8 GiB | 24 GiB |
| db.t4g.2xlarge | 8 | 32 | 4 | 3,324 | 8 GiB | 24 GiB |
| db.r5.2xlarge | 8 | 64 | 8 | 5,000 | 16 GiB | 48 GiB |
| db.r6g.2xlarge | 8 | 64 | 8 | 5,000 | 16 GiB | 48 GiB |
| db.r7g.2xlarge | 8 | 64 | 8 | 5,000 | 16 GiB | 48 GiB |
| db.r8g.2xlarge | 8 | 64 | 8 | 5,000 | 16 GiB | 48 GiB |
| db.x2g.2xlarge | 8 | 128 | 16 | 5,000 | 32 GiB | 96 GiB |
| db.m5.4xlarge | 16 | 64 | 4 | 5,000 | 16 GiB | 48 GiB |
| db.m6g.4xlarge | 16 | 64 | 4 | 5,000 | 16 GiB | 48 GiB |
| db.m7g.4xlarge | 16 | 64 | 4 | 5,000 | 16 GiB | 48 GiB |
| db.m8g.4xlarge | 16 | 64 | 4 | 5,000 | 16 GiB | 48 GiB |
| db.r5.4xlarge | 16 | 128 | 8 | 5,000 | 32 GiB | 96 GiB |
| db.r6g.4xlarge | 16 | 128 | 8 | 5,000 | 32 GiB | 96 GiB |
| db.r7g.4xlarge | 16 | 128 | 8 | 5,000 | 32 GiB | 96 GiB |
| db.r8g.4xlarge | 16 | 128 | 8 | 5,000 | 32 GiB | 96 GiB |
| db.x2g.4xlarge | 16 | 256 | 16 | 5,000 | 64 GiB | 192 GiB |
| db.m5.8xlarge | 32 | 128 | 4 | 5,000 | 32 GiB | 96 GiB |
| db.m6g.8xlarge | 32 | 128 | 4 | 5,000 | 32 GiB | 96 GiB |
| db.m7g.8xlarge | 32 | 128 | 4 | 5,000 | 32 GiB | 96 GiB |
| db.m8g.8xlarge | 32 | 128 | 4 | 5,000 | 32 GiB | 96 GiB |
| db.r5.8xlarge | 32 | 256 | 8 | 5,000 | 64 GiB | 192 GiB |
| db.r6g.8xlarge | 32 | 256 | 8 | 5,000 | 64 GiB | 192 GiB |
| db.r7g.8xlarge | 32 | 256 | 8 | 5,000 | 64 GiB | 192 GiB |
| db.r8g.8xlarge | 32 | 256 | 8 | 5,000 | 64 GiB | 192 GiB |
| db.x2g.8xlarge | 32 | 512 | 16 | 5,000 | 128 GiB | 384 GiB |
| db.m5.12xlarge | 48 | 192 | 4 | 5,000 | 48 GiB | 144 GiB |
| db.m6g.12xlarge | 48 | 192 | 4 | 5,000 | 48 GiB | 144 GiB |
| db.m7g.12xlarge | 48 | 192 | 4 | 5,000 | 48 GiB | 144 GiB |
| db.m8g.12xlarge | 48 | 192 | 4 | 5,000 | 48 GiB | 144 GiB |
| db.r5.12xlarge | 48 | 384 | 8 | 5,000 | 96 GiB | 288 GiB |
| db.r6g.12xlarge | 48 | 384 | 8 | 5,000 | 96 GiB | 288 GiB |
| db.r7g.12xlarge | 48 | 384 | 8 | 5,000 | 96 GiB | 288 GiB |
| db.r8g.12xlarge | 48 | 384 | 8 | 5,000 | 96 GiB | 288 GiB |
| db.x2g.12xlarge | 48 | 768 | 16 | 5,000 | 192 GiB | 576 GiB |
| db.m5.16xlarge | 64 | 256 | 4 | 5,000 | 64 GiB | 192 GiB |
| db.m6g.16xlarge | 64 | 256 | 4 | 5,000 | 64 GiB | 192 GiB |
| db.m7g.16xlarge | 64 | 256 | 4 | 5,000 | 64 GiB | 192 GiB |
| db.m8g.16xlarge | 64 | 256 | 4 | 5,000 | 64 GiB | 192 GiB |
| db.r5.16xlarge | 64 | 512 | 8 | 5,000 | 128 GiB | 384 GiB |
| db.r6g.16xlarge | 64 | 512 | 8 | 5,000 | 128 GiB | 384 GiB |
| db.r7g.16xlarge | 64 | 512 | 8 | 5,000 | 128 GiB | 384 GiB |
| db.r8g.16xlarge | 64 | 512 | 8 | 5,000 | 128 GiB | 384 GiB |
| db.x2g.16xlarge | 64 | 1024 | 16 | 5,000 | 256 GiB | 768 GiB |
| db.m5.24xlarge | 96 | 384 | 4 | 5,000 | 96 GiB | 288 GiB |
| db.m8g.24xlarge | 96 | 384 | 4 | 5,000 | 96 GiB | 288 GiB |
| db.r5.24xlarge | 96 | 768 | 8 | 5,000 | 192 GiB | 576 GiB |
| db.r8g.24xlarge | 96 | 768 | 8 | 5,000 | 192 GiB | 576 GiB |
| db.m8g.48xlarge | 192 | 768 | 4 | 5,000 | 192 GiB | 576 GiB |
| db.r8g.48xlarge | 192 | 1536 | 8 | 5,000 | 384 GiB | 1,152 GiB |
Connection limits follow each provider's published rule; the memory parameters follow the RDS default expressions.
Reading an instance class as a set of parameter values
A managed database instance class looks like a two-column fact — so many vCPU, so much memory — but it is really a set of decisions already made for you. The memory figure alone fixes the connection ceiling, the buffer cache and the planner's view of the world. This table shows every instance next to the parameter values its memory implies, so you can read a class as the configuration it actually is.
How it works
- Lists every instance class in the catalogue for the cloud you pick, sorted from smallest to largest.
- Shows memory per vCPU, which is the quickest way to tell a general-purpose class from a memory-optimised one.
- Gives max_connections per instance, computed from that provider's published rule and the engine you select.
- Shows shared_buffers or innodb_buffer_pool_size and effective_cache_size, derived from the RDS default expressions.
columns and where each comes from vCPU, memory the provider's instance class table GiB / vCPU memory divided by vCPU max_connections the provider's published rule for the selected engine shared_buffers 25% of memory (PostgreSQL) innodb_buffer_pool 75% of memory (MySQL) effective_cache_size 75% of memory (a planner hint)
Worked example
One instance class, db.m5.2xlarge with 8 vCPU and 32 GiB, read on both engines.
- memory per vCPU = 32 ÷ 8 = 4 GiB, the general-purpose ratio
- PostgreSQL: about 3,324 connections, shared_buffers 8 GiB, effective_cache_size 24 GiB
- MySQL: about 2,518 connections, innodb_buffer_pool_size 24 GiB
- the same hardware, two engines, and the buffer allocation differs by a factor of three
PostgreSQL keeps 25% for itself and leaves the rest to the operating system's cache; MySQL claims 75% for InnoDB because it does not lean on that cache. Neither is a tuning choice you get to make casually — both are consequences of picking the class, and they are why the same instance behaves differently under the two engines.
Reading the result
- Memory per vCPU tells you what a class is for. Around 2 GiB per vCPU is compute-oriented, 4 GiB is general purpose, 8 GiB and above is memory-optimised — AWS's r-classes, Azure's E-series. For a database the higher ratios are usually the better value, because memory buys both cache and connection headroom.
- Azure's B1ms is the one row that does not follow its own pattern: 50 connections where the per-GiB rule would predict far more. This table reproduces Azure's published values rather than fitting a curve, so that anomaly survives instead of being smoothed away.
- The t-class on AWS and the B-series on Azure are burstable. They accumulate CPU credits while idle and throttle once the credits are gone, which makes them excellent for development and poor for steady production load — the table shows their shape, not that caveat, so keep it in mind when the smallest match is one of them.
- Cloud SQL entries here are common custom shapes, not an exhaustive catalogue, because Cloud SQL lets you request nearly any combination of vCPU and memory. Treat that column as representative.
- These parameter values are the defaults an instance ships with, not limits. All three clouds let you override them through a parameter group or flag, and the connection formulas in particular are only defaults — see the max connections calculator for what changing them costs you.
Common questions
- Why does max_connections change when I switch engines?
- Because each engine has its own divisor in the provider's formula. On AWS, PostgreSQL divides available memory by about 9.5 MB per connection while MySQL divides by about 12.6 MB, so the same instance yields fewer MySQL connections. MariaDB from 10.5 uses a different divisor again.
- Is more memory per vCPU always better for a database?
- Usually, up to the point where your working set fits in memory. Once the data a query touches is cached, adding memory stops buying speed and only buys connection headroom. If your dataset is small and your queries are CPU-heavy — lots of sorting, aggregation or JSON processing — a lower ratio with more cores can be the better instance.
- Can I change these parameter values after launching?
- Yes, through a parameter group on RDS, server parameters on Azure, or database flags on Cloud SQL. Some take effect immediately and some need a reboot — shared_buffers and innodb_buffer_pool_size allocate at startup, so they are in the reboot category. The defaults shown here are sensible starting points and worth a reason before overriding.