The RDS license tax: SQL Server Enterprise costs 5.2x MySQL on identical hardware
On db.r6i.xlarge in us-east-1, RDS for MySQL lists at $0.480 an hour. RDS for SQL Server Enterprise lists at $2.501. Same 4 vCPUs, same 32 GiB, same instance type, same region, same on-demand term. The multiplier is 5.21, and $2.021 of that hourly rate is license: $0.505 per vCPU-hour.
The number does not appear on an RDS dashboard. The gap sits in a column of the AWS price list that gets filtered away by the first GROUP BY database_engine.
The 116,134 rows in our RDS extract do not contain one price per engine. They contain six values of license_model that encode three economic models: nothing to license, bring your own, and AWS-billed. Three of those values, plus a separate boolean flag, can mark a row whose price leaves the license out. Sort the file by price and Oracle Enterprise “costs” $0.466 an hour, $0.014 below MySQL. On the newest instance generation, SQL Server Enterprise “costs” exactly what MySQL costs. Both rows are real. Neither includes a database license.
The license is close to a flat rate. The multiplier is not.
Enterprise adds about half a dollar per vCPU-hour. Ten of the eleven instance families in us-east-1 that list both MySQL and SQL Server Enterprise price the premium between $0.492 and $0.505 per vCPU-hour, regardless of generation or size. x2iedn is the outlier at $0.3715 per vCPU-hour, on hardware that lists at $1.902 an hour for MySQL.
Because the license is nearly fixed per vCPU and the hardware is not, the multiplier is set by the hardware price:
license per vCPU-hour = (license-included price - open-source price) / vCPU
db.t3.xlarge ($2.262 - $0.272) / 4 = $0.4975/vCPU-hr → 8.32× MySQL
db.r6i.xlarge ($2.501 - $0.480) / 4 = $0.5053/vCPU-hr → 5.21× MySQL
db.x2iedn.xlarge ($3.3878 - $1.902) / 4 = $0.3715/vCPU-hr → 1.78× MySQL
A 5.2× headline is therefore a statement about db.r6i.xlarge, not about SQL Server. On cheap instances the same license is an 8× multiplier; on expensive instances it is under 2×. Quote the instance with the multiple.
On db.r6i.xlarge, Enterprise costs $17,704 a year more than MySQL
Prices are on-demand, Single-AZ, us-east-1, lowest row per engine, edition, and license model. Annual figures use 8,760 hours (730 × 12).
| Engine / edition | license_model | $/hour | × MySQL | $/year |
|---|---|---|---|---|
| MySQL | No license required | $0.480 | 1.00× | $4,204.80 |
| MariaDB | No license required | $0.480 | 1.00× | $4,204.80 |
| PostgreSQL | No license required | $0.500 | 1.04× | $4,380.00 |
| Aurora MySQL | No license required | $0.580 | 1.21× | $5,080.80 |
| Aurora PostgreSQL | No license required | $0.580 | 1.21× | $5,080.80 |
| SQL Server Web | License included | $0.880 | 1.83× | $7,708.80 |
| Oracle SE2 | License included | $0.964 | 2.01× | $8,444.64 |
| SQL Server Standard | License included | $1.520 | 3.17× | $13,315.20 |
| SQL Server Enterprise | License included | $2.501 | 5.21× | $21,908.76 |
The step from Standard to Enterprise alone is $0.981 an hour, $8,593.56 a year per instance, for the same hardware and the same deployment. Standard is already 3.17× MySQL. Enterprise adds a second, larger step.
PostgreSQL costs $0.020 an hour more than MySQL on this instance, 4.2%. Over a year that is $175.20. The step from PostgreSQL to SQL Server Enterprise on the same instance is $17,528.76.
db.m6i.xlarge: cheaper hardware, bigger multiplier
Drop to 16 GiB of memory and the MySQL instance rate falls 28.8%, from $0.480 to $0.342. The Enterprise license falls 1.3%, from $0.5053 to $0.4985 per vCPU-hour. The multiplier climbs to 6.83.
| Engine / edition | $/hour | × MySQL | $/year |
|---|---|---|---|
| MySQL | $0.342 | 1.00× | $2,995.92 |
| MariaDB | $0.342 | 1.00× | $2,995.92 |
| PostgreSQL | $0.356 | 1.04× | $3,118.56 |
| SQL Server Web | $0.540 | 1.58× | $4,730.40 |
| SQL Server Standard | $1.224 | 3.58× | $10,722.24 |
| SQL Server Enterprise | $2.336 | 6.83× | $20,463.36 |
Aurora and Oracle license-included rows do not exist for db.m6i.xlarge in us-east-1. Oracle appears only as a BYOL row at $0.342.
Six license_model labels, three pricing models
license_model | Engines | What the hourly price includes |
|---|---|---|
| No license required | MySQL, MariaDB, PostgreSQL, Aurora | Instance only. Nothing to license. |
| License included | SQL Server, Oracle SE2 | Instance plus the AWS-billed software license. |
| Bring your own license (BYOL) | Oracle, Db2 | Instance only. You supply the license. |
| Bring your own media | SQL Server | Instance only. You supply the license and the installation media. |
| NA | SQL Server | Ambiguous. See below. |
| Marketplace | Db2 | Instance plus third-party software billed through Marketplace. |
Oracle BYOL is not a bargain
db.r6i.xlarge with Oracle Enterprise BYOL lists at $0.466 an hour. That is $0.014 less than MySQL, and $4,082.16 a year against MySQL’s $4,204.80. Read as a price list, Oracle Enterprise is the cheapest engine on the instance, open-source or not.
The row prices an instance onto which you install a license you already own. The $0.466 covers the instance. The Oracle license is the cost you were trying to measure, and it is not in this file. The file also carries no Oracle Enterprise license-included row at all, only SE2 at $0.964. So the comparison a naive query produces is “Oracle Enterprise, $0.466” against “SQL Server Enterprise, $2.501”, which measures the Microsoft license, not the engines.
The right comparison on this instance is between engines you can run under the same license model. Open-source RDS engines all sit between $0.480 and $0.580. Oracle SE2 license included is $0.964. SQL Server Enterprise license included is $2.501. A Bring your own license or Bring your own media row prices a license you already own; a License included row prices one you do not.
NA hides two different prices
On db.r6i.xlarge, SQL Server Enterprise has two rows with license_model = NA. One is $0.744 (customer-provided media, operation 0406); the other is $2.501 (AWS-provided media, operation 0403), identical to the license-included rate. min(price_usd) returns $0.744 and understates Enterprise by 70%.
The column cannot separate them. The operation code can: 0405 and 0406 are the customer-provided-media rows. Standard has the same pair, $0.744 against $1.520.
The newest generations exclude the license entirely
Every SQL Server edition on m7i, m8i, m8a, r7i, r8i, r8a, and x2m in us-east-1 carries unbundled_licensing = TRUE (535 rows). That flag comes from AWS’s own Unbundled Licensing field: the row prices the instance without the license fee, and AWS bills the license separately outside the offer.
The result is db.r7i.xlarge SQL Server Enterprise “license included” at $0.500 an hour, the same number as MySQL on that instance. A dashboard that takes the cheapest SQL Server row per instance type will pick it and show SQL Server at the MySQL rate. The license is not free; it is absent from the file. Until AWS publishes a bundled rate for those families, use 6th-generation x86 instances or older to model license costs.
The tax is about $17,700 a year per node
One instance, 8,760 hours, Single-AZ:
| Engine | $/hour | $/year | Premium vs MySQL |
|---|---|---|---|
| MySQL | $0.480 | $4,204.80 | — |
| SQL Server Standard | $1.520 | $13,315.20 | +$9,110.40 |
| SQL Server Enterprise | $2.501 | $21,908.76 | +$17,703.96 |
The Enterprise premium on a single instance, $17,704, buys four more db.r6i.xlarge MySQL instances for a year ($16,819.20) with $885 left over. The database is still one node.
Multi-AZ is exactly 2× for most engines, not for Enterprise
Multi-AZ means RDS runs a standby copy in a second Availability Zone. Verify before doubling. In us-east-1, the Multi-AZ row is exactly twice the Single-AZ row for MySQL ($0.960), MariaDB, PostgreSQL ($1.000), Oracle SE2 license included ($1.928), and SQL Server Standard ($3.040). SQL Server Enterprise is not: $3.601, or 1.44× the single-AZ rate. Web is 1.92×. Treating Enterprise Multi-AZ as double would overstate it by $1.401 an hour, $12,272.76 a year per instance.
Three Multi-AZ deployments, priced at the published Multi-AZ rate:
| Engine | Multi‑AZ $/hour | Per instance / year | Three instances / year |
|---|---|---|---|
| MySQL | $0.960 | $8,409.60 | $25,228.80 |
| SQL Server Standard | $3.040 | $26,630.40 | $79,891.20 |
| SQL Server Enterprise | $3.601 | $31,544.76 | $94,634.28 |
The difference between the MySQL and Enterprise clusters is $69,405.48 a year, for identical instance types, identical storage, and identical availability.
Storage and backup do not move the decision
- gp3 storage: $0.115 per GB-month Single-AZ, $0.230 Multi-AZ, exactly twice.
- Provisioned IOPS storage: $0.125 per GB-month Single-AZ, $0.250 Multi-AZ, also twice.
- Backup beyond the free tier: $0.095 per GB-month, identical for every engine including SQL Server.
A 200 GB Multi-AZ gp3 volume costs $46 a month. The Enterprise-vs-MySQL compute gap on one Multi-AZ instance is $1,927.93 a month, 42× the storage charge. Doubling the volume to 400 GB adds $46 and cannot touch a gap that size. Backups carry no engine markup at all, so there is no license story in storage.
When the license justifies changing engines
The tax you can remove is the difference between the rate you actually pay and the open-source rate on the same instance:
annual tax = (effective $/hour - open-source $/hour) × hours × nodes
On db.r6i.xlarge:
- License included: ($2.501 − $0.480) × 8,760 = $17,703.96 per node, $69,405.48 for three Multi-AZ nodes.
- Customer-provided media, license already owned: ($0.744 − $0.480) × 8,760 = $2,312.64 per node.
Same engine, same hardware, same features. The tax you can remove by changing engines differs by 7.7×.
Three rules follow.
- Price the rate you actually pay. A license-included quote is the ceiling. If you hold Microsoft licenses that can run on RDS, the customer-provided-media row is your cost, plus what you paid for the licenses years ago.
- Check Standard before considering a port. On
db.r6i.xlargethe Standard-to-Enterprise step is $8,593.56 a year per instance. A workload that does not use Enterprise-only features can cut that without touching application code. Verify the feature list against your workload before assuming you need Enterprise. - Port when the tax over the application’s remaining life exceeds the port estimate. A three-node Enterprise cluster at $69,405.48 a year accumulates $208,216.44 over three years. The same cluster on licenses you already own accumulates $20,813.76. A port that costs less than the first number is funded by the bill; one that costs more than the second is hard to defend.
Before any of that, filter by database_engine, database_edition, license_model, deployment_option, and unbundled_licensing. Then sort by price. The database comparison lists every engine with its license model attached. The RDS overview covers the storage and IOPS rows. If you run SQL Server on EC2 instead of RDS, the EC2 Windows license post and the Windows licensing guide cover the operating system license sitting under it.