ApsaraDB RDS (RDS) offers primary instance types across four engines — MySQL, PostgreSQL, SQL Server, and MariaDB — each with different instance families and storage options. This page explains the three core metrics that determine instance performance (instance family, IOPS, and I/O bandwidth) and links to the per-engine instance type lists.
Instance type lists by engine
| Engine | Supported product types | Supported storage types | Instance type lists |
|---|---|---|---|
| MySQL | Standard and YiTian | Cloud disks and Premium Local SSDs | Primary instance types for standard ApsaraDB RDS for MySQL instances (x86) and Primary instance types for YiTian ApsaraDB RDS for MySQL instances (ARM) |
| PostgreSQL | Standard and YiTian | Cloud disks | Primary instance types for standard and YiTian ApsaraDB RDS for PostgreSQL instances |
| SQL Server | N/A | Cloud disks | Primary instance types for ApsaraDB RDS for SQL Server instances |
| MariaDB | Standard | Cloud disks | Primary instance types for ApsaraDB RDS for MariaDB instances |
Core metrics
Three metrics determine primary instance performance: instance family, IOPS, and I/O bandwidth.
Instance family
The instance family determines whether CPU, memory, storage, and I/O resources are dedicated to your instance or shared with other instances on the same physical server. This is the primary driver of performance consistency.
| Instance family | Workload fit | Storage type | Dedicated resources | Shared resources | Performance consistency |
|---|---|---|---|---|---|
| Shared | Entry-level workloads with low, predictable load | Cloud disk | Memory and storage | CPU and I/O | Fluctuates under high server load. Supported only by RDS for SQL Server. |
| General-purpose | Development, testing, and low-traffic applications | Cloud disk | Memory and storage | CPU and I/O | Fluctuates under high server load. |
| General-purpose | Development, testing, and low-traffic applications | Premium Local SSD | Memory | CPU, storage, and I/O | Fluctuates under high server load. |
| Dedicated | Production workloads requiring stable, predictable performance | Cloud disk | All resources | None | Stable, no resource contention. |
| Dedicated | Production workloads requiring stable, predictable performance | Premium Local SSD | CPU, memory, and storage | I/O | Stable, no resource contention. |
| Dedicated host | Mission-critical applications requiring maximum isolation | Premium Local SSD | All resources | None | Highest stability and isolation. |
Choose an instance family based on your workload:
Shared or General-purpose: Use for development environments, internal tools, or workloads where brief performance variation is acceptable. Because CPU resources are pooled across instances on the same physical server, the listed maximum connections and peak IOPS can be higher than those of a dedicated instance with the same vCPU and memory spec. However, peak performance is not guaranteed when the server is under high load.
Dedicated: Use for production databases where consistent latency and throughput are required. All vCPU and memory resources are exclusively allocated to the instance, so the listed maximums are hard ceilings — not burst values.
Dedicated host: Use when sharing any physical server resource with another tenant is unacceptable, such as for compliance-driven isolation or highly latency-sensitive workloads.
IOPS
Input/Output Operations Per Second (IOPS) measures how many random read and write requests the storage can handle per second.
The actual maximum IOPS of an instance is always the minimum of three independent ceilings: the instance type ceiling, the storage-capacity-derived ceiling, and the storage type ceiling. Use the formulas in the following table to calculate the actual maximum IOPS.
For instances using Premium Local SSDs, the actual maximum IOPS equals the maximum IOPS specified for the instance type — no formula applies.
For instances using cloud disks, apply the formula that matches the storage type:
| Storage type | Formula for actual maximum IOPS (storage capacity in GB) |
|---|---|
| Premium ESSD — with I/O performance burst enabled | min{Maximum IOPS for the instance type, 1000000} |
| Premium ESSD — with I/O performance burst disabled | min{Maximum IOPS for the instance type, 1800 + 50 × Storage capacity, 50000} |
| ESSD PL3 | min{Maximum IOPS for the instance type, 1800 + 50 × Storage capacity, 1000000} |
| ESSD PL2 | min{Maximum IOPS for the instance type, 1800 + 50 × Storage capacity, 100000} |
| ESSD PL1 | min{Maximum IOPS for the instance type, 1800 + 50 × Storage capacity, 50000} |
| Standard SSD | min{Maximum IOPS for the instance type, 1800 + 30 × Storage capacity, 25000} |
The min{} function returns the smallest of the listed values. Adding storage capacity raises the capacity-derived ceiling but cannot push the result above the instance type ceiling or the storage type ceiling.
Example: IOPS calculation
Instance: mysql.x2.large.2c with a PL1 ESSD of 20 GB
Formula: min{Maximum IOPS for the instance type, 1800 + 50 × Storage capacity, 50000}
| Value | Calculation |
|---|---|
| Maximum IOPS for the instance type | 20000 (from the instance type list) |
1800 + 50 × Storage capacity | 1800 + 50 × 20 = 2800 |
| PL1 ESSD ceiling | 50000 |
Result: 2800 IOPS — the smallest of the three values.
Logical database I/Os and physical disk I/Os do not have a one-to-one correspondence. MySQL InnoDB has a default page size of 16 KB while the disk block size is 4 KB, so one logical page read requires four physical disk I/Os. SQL Server has a default page size of 8 KB, so the same 1,000 physical disk I/Os translates to 250 logical I/Os for MySQL InnoDB and 500 logical I/Os for SQL Server.
I/O bandwidth
I/O bandwidth (also called throughput) measures how much data the storage can read or write sequentially per second.
Like IOPS, the actual maximum I/O bandwidth is always the minimum of three independent ceilings: the instance type ceiling, the storage-capacity-derived ceiling, and the storage type ceiling.
For instances using cloud disks, apply the formula that matches the storage type:
| Storage type | Formula for actual maximum I/O bandwidth (MB/s, storage capacity in GB) |
|---|---|
| Premium ESSD — with I/O performance burst enabled | min{Maximum I/O bandwidth for the instance type, 4000} |
| Premium ESSD — with I/O performance burst disabled | min{Maximum I/O bandwidth for the instance type, 120 + 0.5 × Storage capacity, 350} |
| ESSD PL3 | min{Maximum I/O bandwidth for the instance type, 120 + 0.5 × Storage capacity, 4000} |
| ESSD PL2 | min{Maximum I/O bandwidth for the instance type, 120 + 0.5 × Storage capacity, 750} |
| ESSD PL1 | min{Maximum I/O bandwidth for the instance type, 120 + 0.5 × Storage capacity, 350} |
| Standard SSD | min{Maximum I/O bandwidth for the instance type, 120 + 0.5 × Storage capacity, 300} |
Example: I/O bandwidth calculation
Instance: mysql.x2.large.2c with a PL3 ESSD of 5,000 GB
Formula: min{Maximum I/O bandwidth for the instance type, 120 + 0.5 × Storage capacity, 4000}
| Value | Calculation |
|---|---|
| Maximum I/O bandwidth for the instance type | 192 MB/s (from the instance type list) |
120 + 0.5 × Storage capacity | 120 + 0.5 × 5000 = 2620 |
| PL3 ESSD ceiling | 4000 |
Result: 192 MB/s — the smallest of the three values.
Relationship between IOPS and I/O bandwidth
IOPS and I/O bandwidth are linked by the size of each I/O operation:
I/O bandwidth (MB/s) = IOPS × I/O size (KB) / 1024
The I/O size in this formula is the physical block size of the cloud disk (4 KB by default), not the logical page size of the database engine.
An instance hits one limit before the other, depending on the workload:
IOPS-bound workloads: Applications performing many small I/O operations (such as 4 KB random reads and writes) reach the IOPS ceiling first. I/O bandwidth utilization stays well below its limit.
Bandwidth-bound workloads: Applications performing fewer but large I/O operations (such as 256 KB sequential reads and writes) saturate I/O bandwidth first. IOPS remains relatively low.
FAQ
Why does an entry-level instance support more connections and higher peak IOPS than an enterprise-level instance with the same number of CPU cores and memory?
Entry-level instances use the Shared or General-purpose instance family, which pools CPU resources across multiple instances on the same physical server. Pooling allows each instance to burst above its nominal allocation, which is why the listed maximum connections and IOPS can be higher than for a same-spec dedicated instance. The tradeoff is that performance may fluctuate when the physical server is under high load. Enterprise-level (Dedicated) instances have exclusive access to their allocated vCPU and memory, so performance is stable but the listed maximums are hard ceilings. For more details, see Instance families.
How do I check which instance types are available to purchase in a region?
Call the DescribeAvailableResource API operation to query available resources in a specific region.
Why aren't queries per second (QPS) and transactions per second (TPS) listed in the instance type tables?
QPS and TPS depend on your schema design, query patterns, and application logic — not just the instance type. Two instances with identical specs can produce very different QPS and TPS results depending on the workload. For instructions on running your own performance tests, see Test guidelines.
What's next
View read-only instance types: Instance types for read-only ApsaraDB RDS instances
Learn about read-only instances:
Create a primary instance after selecting its instance type: