Skip to content

Commit 7dfd019

Browse files
urosmilCopilot
andauthored
Add IOPS and throughput section to SQL MI resourcce limits page (#36793)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent b23e5b9 commit 7dfd019

2 files changed

Lines changed: 93 additions & 40 deletions

File tree

azure-sql/includes/sql-managed-instance/azure-sql-managed-instance-next-gen-general-purpose-upgrade.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
author: MashaMSFT
33
ms.author: mathoma
44
ms.reviewer: randolphwest
5-
ms.date: 11/18/2025
5+
ms.date: 03/10/2026
66
ms.service: azure-sql-managed-instance
77
ms.topic: include
88
ms.custom:
@@ -32,7 +32,7 @@ The Next-gen General Purpose service tier helps reduce cost by offering free IOP
3232

3333
For example:
3434
- If 1 GB of storage costs 0.115, then 1 IOPS = 0.115/3 = 0.038 per IOPS.
35-
- A 1,024-GB instance receives 3,072 IOPS for free. You can choose to increase your IOPS up to the [VM limit](../../managed-instance/resource-limits.md#iops) for an additional cost.
35+
- A 1,024-GB instance receives 3,072 IOPS for free. You can choose to increase your IOPS up to the [VM limit](../../managed-instance/resource-limits.md#iops-and-throughput) for an additional cost.
3636

3737
#### When to choose this service tier
3838

azure-sql/managed-instance/resource-limits.md

Lines changed: 91 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: This article provides an overview of the resource limits for Azure
55
author: vladai78
66
ms.author: vladiv
77
ms.reviewer: mathoma, vladiv, sachinp, wiassaf, randolphwest
8-
ms.date: 11/18/2025
8+
ms.date: 03/10/2026
99
ms.service: azure-sql-managed-instance
1010
ms.subservice: service-overview
1111
ms.topic: reference
@@ -91,10 +91,9 @@ In this section:
9191

9292
- [Number of vCores](#number-of-vcores)
9393
- [Max memory](#max-memory)
94-
- [IOPS](#iops)
9594
- [Maximum instance storage size](#maximum-instance-storage-size-reserved)
9695
- [Service tier characteristics comparison](#service-tier-characteristics-comparison)
97-
- [File IO characteristics in General Purpose tier](#file-io-characteristics-in-general-purpose-tier)
96+
- [IOPS and throughput](#iops-and-throughput)
9897
- [Data and log storage](#data-and-log-storage)
9998
- [Backups and storage](#backups-and-storage)
10099
- [Additional characteristics considerations](#additional-characteristics-considerations)
@@ -104,8 +103,8 @@ In this section:
104103

105104
| Hardware generation | General Purpose | Next-gen General Purpose | Business Critical |
106105
| --- | --- | --- | --- |
107-
| **Standard-series (Gen5)** | 2<sup>1</sup> , 4, 8, 16, 24, 32, 40, 64, 80 | 4, 8, 16, 24, 32, 40, 64, 80 | 4, 8, 16, 24, 32, 40, 64, 80 |
108-
| **Premium-series** | 2<sup>1</sup> , 4, 8, 16, 24, 32, 40, 64, 80 | 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128 | 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128 |
106+
| **Standard-series (Gen5)** | 2<sup>1</sup>, 4, 8, 16, 24, 32, 40, 64, 80 | 4, 8, 16, 24, 32, 40, 64, 80 | 4, 8, 16, 24, 32, 40, 64, 80 |
107+
| **Premium-series** | 2<sup>1</sup>, 4, 8, 16, 24, 32, 40, 64, 80 | 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128 | 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128 |
109108
| **Memory optimized premium-series** | 4, 8, 16, 24, 32, 40, 64, 80 | 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128 | 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128 |
110109

111110
<sup>1</sup> Deploying a 2-vCore instance is only possible inside an [instance pool](instance-pools-overview.md).
@@ -149,9 +148,9 @@ The following table lists the maximum storage size based on the number of vCores
149148
| Max number of database files | 280 per instance, unless the instance storage size or [Azure Premium Disk storage allocation space](doc-changes-updates-known-issues.md#exceeding-storage-space-with-small-database-files) limit has been reached. | 4,096 files per database | 32,767 files per database, unless the instance storage size limit has been reached. |
150149
| Max data file size | Maximum size of each data file is 8 TB. Use at least two data files for databases larger than 8 TB. | Up to currently available instance size (depending on the number of vCores). | Up to currently available instance size (depending on the number of vCores). |
151150
| Max log file size | Limited to 2 TB and currently available instance storage size. | Limited to 2 TB and currently available instance storage size. | Limited to 2 TB and currently available instance storage size. |
152-
| Data/Log IOPS (approximate) | 500 - 7500 per file<br />\*[Increase file size to get more IOPS](#file-io-characteristics-in-general-purpose-tier) | Reserved storage * 3 - up to the VM limit. 300 in case of 32 GB, 64 GB, and 96 GB of reserved storage.<br />VM limit depends on the number of vCores<br />6400 IOPS for a VM with 4 vCores - 80 K IOPS for a VM with 128 vCores | 16 K - 320 K (4000 IOPS/vCore)<br />Add more vCores to get better IO performance. |
153-
| Data throughput (approximate) | 100 - 250 MiB/s per file<br />\*[Increase the file size to get better IO performance](#file-io-characteristics-in-general-purpose-tier) | IOPS / 30 MBps - up to the VM limit. 75 MBps in case of 32 GB, 64 GB, and 96 GB of reserved storage. | Not limited. |
154-
| Log write throughput limit (per instance) | 4.5 MiB/s per vCore<br />Max 120 MiB/s per instance<br />22 - 65 MiB/s per DB (depending on log file size)<br />\*[Increase the file size to get better IO performance](#file-io-characteristics-in-general-purpose-tier) | 4.5 MiB/s per vCore<br />Max 192 MiB/s | Standard-series:<br />4.5 MiB/s per vCore<br />Max 96 MiB/s<br /><br />Premium-series and Memory optimized premium-series:<br />12 MiB/s per vCore<br />Max 192 MiB/s |
151+
| Data/Log IOPS (approximate) | 500 - 7500 per file<br />\*[Increase file size to get more IOPS](#iops-and-throughput) | Reserved storage * 3 - up to the VM limit. 300 in case of 32 GB, 64 GB, and 96 GB of reserved storage.<br />VM limit depends on the number of vCores<br />6400 IOPS for a VM with 4 vCores - 80 K IOPS for a VM with 128 vCores | 16 K - 320 K (4000 IOPS/vCore)<br />Add more vCores to get better IO performance. |
152+
| Data throughput (approximate) | 100 - 250 MiB/s per file<br />\*[Increase the file size to get better IO performance](#iops-and-throughput) | IOPS / 30 MBps - up to the VM limit. 75 MBps in case of 32 GB, 64 GB, and 96 GB of reserved storage. | Not limited. |
153+
| Log write throughput limit (per instance) | 4.5 MiB/s per vCore<br />Max 120 MiB/s per instance<br />22 - 65 MiB/s per DB (depending on log file size)<br />\*[Increase the file size to get better IO performance](#iops-and-throughput) | 4.5 MiB/s per vCore<br />Max 192 MiB/s | Standard-series:<br />4.5 MiB/s per vCore<br />Max 96 MiB/s<br /><br />Premium-series and Memory optimized premium-series:<br />12 MiB/s per vCore<br />Max 192 MiB/s |
155154
| Storage IO latency (approximate<sup>1</sup>) | 5-10 ms | 3-5 ms | 1-2 ms |
156155
| In-memory OLTP | Not supported | Not supported | Available, [size depends on number of vCore](#in-memory-oltp-available-space) |
157156
| Max sessions | 30000 | 30000 | 30000 |
@@ -165,37 +164,23 @@ The following table lists the maximum storage size based on the number of vCores
165164

166165
<sup>1</sup> This is an average range. Although the vast majority of IO request durations will fall under the top of the range, outliers which exceed the range are possible.
167166

168-
### IOPS
167+
### IOPS and throughput
169168

170-
For the Next-gen General Purpose and Business Critical service tiers, available IOPS are dictated by the number of vCores:
169+
IOPS and throughput are characteristics of the IO file system.
171170

172-
- **Next-gen General Purpose service tier**: fixed value of IOPS based on the number of vCores. The price of the storage includes the minimum IOPS. If you go above the minimum, you're charged as follows: 1 IOPS = storage price (by region) divided by three. For example, if 1 GB of storage costs 0.115, then 1 IOPS = 0.115/3 = 0.038 per IOPS.
173-
- **Business Critical service tier**: uses a formula (4000 IOPS/vCore) to determine IOPS limits.
171+
IOPS and throughput differ by service tier in the following ways:
174172

175-
The following table lists the max IOPS available to each service tier based on the number of vCores:
173+
- In the **Business Critical** service tier, throughput is unlimited.
174+
- In the **General Purpose** service tier, throughput depends on the file size.
175+
- In the **Next-gen General Purpose** service tier, throughput scales proportionally with the number of IOPS allocated to the instance.
176176

177-
| Number of vCores | Next-gen General Purpose | Business Critical |
178-
| --- | --- | --- |
179-
| 4 | 6,400 | 16,000 |
180-
| 6 | 9,600 | 24,000 |
181-
| 8 | 12,800 | 32,000 |
182-
| 10 | 16,000 | 40,000 |
183-
| 12 | 19,200 | 48,000 |
184-
| 16 | 25,600 | 64,000 |
185-
| 20 | 32,000 | 80,000 |
186-
| 24 | 38,400 | 96,000 |
187-
| 32 | 51,200 | 128,000 |
188-
| 40 | 64,000 | 160,000 |
189-
| 48 | 76,800 | 192,000 |
190-
| 56 | 80,000 | 224,000 |
191-
| 64 | 80,000 | 256,000 |
192-
| 80 | 80,000 | 320,000 |
193-
| 96 | 80,000 | 320,000 |
194-
| 128 | 80,000 | 320,000 |
195-
196-
### File IO characteristics in General Purpose tier
197-
198-
In the General Purpose service tier, every database file gets dedicated IOPS and throughput that depend on the file size. Larger files get more IOPS and throughput. IO characteristics of database files are shown in the following table:
177+
The following sections describe IO characteristics by service tier in more detail.
178+
179+
#### IOPS and throughput in the General Purpose service tier
180+
181+
In the General Purpose service tier, every database file gets dedicated IOPS and throughput that depend on the file size. Larger files get more IOPS and throughput.
182+
183+
The following table shows IO characteristics of database files in the **General Purpose** service tier:
199184

200185
| File size | >=0 and <=129 GiB | >129 and <=513 GiB | >513 and <=1025 GiB | >1025 and <=2049 GiB | >2049 and <=4097 GiB | >4097 GiB and <=8 TiB |
201186
| --- | --- | --- | --- | --- | --- | --- |
@@ -206,6 +191,75 @@ If you notice high IO latency on some database file or you see that IOPS/through
206191

207192
There's also an instance-level limit on the max log write throughput (see the previous table for values, for example 22 MiB/s), so you might not be able to reach the max file throughout on the log file because you're hitting the instance throughput limit.
208193

194+
#### IOPS and throughput in the Next-gen General Purpose service tier
195+
196+
The **Next-gen General Purpose** service tier has the following IOPS characteristics:
197+
- **Minimum guaranteed IOPS**: Every instance is guaranteed a minimum of 300 IOPS, regardless of the reserved storage.
198+
- **IOPS scales with reserved storage**: For every 1GB of reserved storage, you get 3 built-in IOPS. For example, if you have 1024 GB of reserved storage, you get 3072 IOPS assigned.
199+
- **Extra IOPS**: You can increase the amount of IOPS above the built-in value up to the cap.
200+
- **Maximum IOPS cap per vCore count**: Each vCore configuration has a maximum IOPS limit, as the max IOPS per vCore table shows.
201+
202+
The **Next-gen General Purpose** service tier has the following throughput characteristics:
203+
204+
- **Minimum guaranteed throughput**: Every instance is guaranteed a minimum of 75 MB/s of throughput, regardless of the number of vCores.
205+
- **Throughput scales with IOPS**: Throughput scales proportionally with the number of IOPS allocated to the instance, using the formula `throughput (MB/s) = IOPS / 30`. For example, an instance allocated with 3,000 IOPS receives 100 MB/s of throughput.
206+
- **Maximum throughput cap per vCore count**: Each vCore configuration has a maximum throughput limit, as the max throughput per vCore table shows. Once the required IOPS are provisioned to reach this cap, allocating additional IOPS increases IOPS capacity but doesn't increase throughput further. For example, a 4 vCore instance (max 6,400 IOPS) reaches its throughput cap of 145 MB/s at 4,350 IOPS. Scaling IOPS from 4,350 to 6,400 provides more IOPS to the instance, but throughput remains capped at 145 MB/s. To increase the maximum throughput, add more vCores.
207+
208+
The following table shows the max IOPS and throughput per number of vCores allocated to an instance in the Next-gen General Purpose service tier:
209+
210+
| **Number of vCores** | **Max IOPS** | **Max throughput (MB/s)** |
211+
|:--|:--|:--|
212+
| 4 | 6,400 | 145 |
213+
| 6 | 9,600 | 217 |
214+
| 8 | 12,800 | 290 |
215+
| 10 | 16,000 | 367 |
216+
| 12 | 19,200 | 445 |
217+
| 16 | 25,600 | 600 |
218+
| 20 | 32,000 | 665 |
219+
| 24 | 38,400 | 730 |
220+
| 32 | 51,200 | 865 |
221+
| 40 | 64,000 | 1,152 |
222+
| 48 | 76,800 | 1,152 |
223+
| 56 - 128 | 80,000 | 1,200 |
224+
225+
#### IOPS pricing in Next-gen General Purpose
226+
227+
When using the additional IOPS, consider the following:
228+
- Additional IOPS is charged per IOPS/month
229+
- Billable IOPS is calculated by the following formula: `Billable IOPS = Total IOPS - default IOPS`.
230+
231+
For example, if you have a pay-as-you-go 4 vCore instance with 6400 IOPS, you are charged for:
232+
- 4 vCores
233+
- SQL license for 4 vCores
234+
- 1024 GB of reserved storage
235+
- 3328 of billable IOPS `(6400 - (1024*3) = 3328 IOPS)`.
236+
237+
#### IOPS and throughput in the Business Critical service tier
238+
239+
In the Business Critical service tier, available IOPS are dictated by the number of vCores using the formula `4000 IOPS/vCore`. Since the Business Critical service tier uses local storage for data and log files, the throughput is unlimited.
240+
241+
The following table lists the max IOPS available in the Business Critical service tier based on the number of vCores:
242+
243+
| Number of vCores | Business Critical |
244+
| --- | --- |
245+
| 4 | 16,000 |
246+
| 6 | 24,000 |
247+
| 8 | 32,000 |
248+
| 10 | 40,000 |
249+
| 12 | 48,000 |
250+
| 16 | 64,000 |
251+
| 20 | 80,000 |
252+
| 24 | 96,000 |
253+
| 32 | 128,000 |
254+
| 40 | 160,000 |
255+
| 48 | 192,000 |
256+
| 56 | 224,000 |
257+
| 64 | 256,000 |
258+
| 80 | 320,000 |
259+
| 96 | 320,000 |
260+
| 128 | 320,000 |
261+
262+
209263
### Data and log storage
210264

211265
The following factors affect the amount of storage used for data and log files, and apply to General Purpose and Business Critical tiers.
@@ -236,7 +290,7 @@ Storage for database backups is allocated to support the [point-in-time restore
236290

237291
- Both data and log file size in the user and system databases are included in the instance storage size that is compared with the max storage size limit. Use the [sys.master_files](/sql/relational-databases/system-catalog-views/sys-master-files-transact-sql) system view to determine the total used space by databases. Error logs aren't persisted and not included in the size. Backups aren't included in storage size.
238292

239-
- Throughput and IOPS in the General Purpose tier also depends on the [file size](#file-io-characteristics-in-general-purpose-tier), and isn't explicitly limited by the SQL Managed Instance.
293+
- Throughput and IOPS in the General Purpose tier also depends on the [file size](#iops-and-throughput), and isn't explicitly limited by the SQL Managed Instance.
240294

241295
- Max instance IOPS depend on the file layout and distribution of workload. As an example, if you create 7 x 1-TB files with max 5 K IOPS each and seven small files (smaller than 128 GB) with 500 IOPS each, you can get 38500 IOPS per instance (7x5000+7x500) if your workload can use all files. Some IOPS are also used for autobackups.
242296

@@ -261,7 +315,7 @@ When allocating memory, you can choose between a minimum and maximum value, and
261315
The following table shows the minimum and maximum memory values for the flexible memory feature:
262316

263317
| vCores | Min RAM (GB) | Max RAM (GB) | Supported API RAM values | Min ratio | Max ratio | Supported ratios |
264-
|--|--|--|--|--|--|
318+
|--|--|--|--|--|--|--|
265319
| 4 | 28 | 48 | 28, 32, 40, 48 | 7 | 12 | 7, 8, 10, 12 |
266320
| 6 | 42 | 72 | 42, 48, 60, 72 | 7 | 12 | 7, 8, 10, 12 |
267321
| 8 | 56 | 96 | 56, 64, 80, 96 | 7 | 12 | 7, 8, 10, 12 |
@@ -290,7 +344,6 @@ For example, if you have a pay-as-you-go 4 vCore instance with 40 GB of memory,
290344
- SQL license for 4 vCores
291345
- 12 GB of billable memory (40 GB - (4*7) = 12 GB).
292346

293-
294347
## Supported regions
295348

296349
SQL Managed Instance can be created only in [supported regions](https://azure.microsoft.com/global-infrastructure/services/?products=sql-database&regions=all). To create a SQL Managed Instance in a region that is currently not supported, you can [send a support request via the Azure portal](../database/quota-increase-request.md).

0 commit comments

Comments
 (0)