Skip to content

Commit 3bd41e7

Browse files
authored
Merge pull request #245641 from code-sidd/Storage_iops
Storage IOPS documentation
2 parents 499a123 + aa0922c commit 3bd41e7

File tree

6 files changed

+133
-1
lines changed

6 files changed

+133
-1
lines changed

articles/mysql/TOC.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@
8686
href: flexible-server/concepts-server-parameters.md
8787
- name: Limitations
8888
href: flexible-server/concepts-limitations.md
89+
- name: Storage IOPS
90+
href: flexible-server/concepts-storage-iops.md
8991
- name: Networking
9092
items:
9193
- name: Networking concepts

articles/mysql/flexible-server/concepts-service-tiers-storage.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ Azure Database for MySQL – Flexible Server supports the provisioning of additi
139139
The minimum IOPS are 360 across all compute sizes and the maximum IOPS is determined by the selected compute size. To learn more about the maximum IOPS per compute size refer to the [table](#service-tiers-size-and-server-types).
140140

141141
> [!Important]
142-
> **Complimentary IOPS** are equal to MINIMUM("Max uncached disk throughput: IOPS/MBps" of compute size, 300 + storage provisioned in GiB * 3)<br>
143142
> **Minimum IOPS are 360 across all compute sizes<br>
144143
> **Maximum IOPS are determined by the selected compute size.
145144
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
---
2+
title: Azure Database for MySQL - Flexible Server storage cops
3+
description: This article describes the storage IOPS in Azure Database for MySQL - Flexible Server.
4+
ms.service: mysql
5+
ms.subservice: flexible-server
6+
ms.topic: conceptual
7+
author: code-sidd
8+
ms.author: sisawant
9+
ms.date: 07/20/2023
10+
---
11+
12+
# Storage IOPS in Azure Database for MySQL - Flexible Server
13+
14+
[!INCLUDE[applies-to-mysql-flexible-server](../includes/applies-to-mysql-flexible-server.md)]
15+
16+
17+
Storage IOPS (I/O Operations Per Second) refer to the number of read and write operations that can be performed by the storage system per second. Higher IOPS values indicate better storage performance, allowing your database to handle more simultaneous read and write operations, resulting in faster data retrieval and improved overall efficiency. When the IOPS setting is set too low, the database server may experience delays in processing requests, resulting in slow performance and reduced throughput. On the other hand, if the IOPS setting is set too high, it may lead to unnecessary resource allocation and potentially increased costs without significant performance improvements.
18+
19+
Azure database for MySQL Flexible Server currently offers two settings for IOPS management, Pre-provisioned IOPS and Autoscale IOPS.
20+
21+
## Pre-provisioned IOPS
22+
Azure Database for MySQL Flexible Server offers pre-provisioned IOPS, allowing you to allocate a specific number of IOPS to your MySQL database server. This setting ensures consistent and predictable performance for your workloads. With pre-provisioned IOPS, you can define a specific IOPS limit for your storage volume, guaranteeing the ability to handle a certain number of requests per second. This results in a reliable and assured level of performance.
23+
24+
Moreover, Additional IOPS with pre-provisioned refers to the flexibility of increasing the provisioned IOPS for the storage volume associated with the server. You have the option to add extra IOPS beyond the default provisioned level, allowing you to customize the performance aligning with your workload requirements at any time.
25+
26+
## Autoscale IOPS
27+
28+
Autoscale IOPS offer the flexibility to scale IOPS on demand, eliminating the need to pre-provision a specific amount of IO per second. By enabling Autoscale IOPS, your server will automatically adjust IOPS based on workload requirements. With the Autoscale IOPS featured enable, you can now enjoy worry free IO management in Azure Database for MySQL - Flexible Server because the server scales IOPs up or down automatically depending on workload needs. 
29+
With this feature, you'll only be charged for the IO your server actually utilizes, avoiding unnecessary provisioning and expenses for underutilized resources. This ensures both cost savings and optimal performance, making it a smart choice for managing your database workload efficiently.
30+
31+
32+
## Monitor Storage performance
33+
Monitoring Storage IOPS utilization is easy with [Metrics available under Monitoring](./concepts-monitoring.md#list-of-metrics) .
34+
35+
#### Overview
36+
To obtain a comprehensive view of the IO utilization for the selected time period.
37+
Navigate to the Monitoring in the Azure portal for Azure Database for MySQL Flexible Server under the Overview blade.
38+
39+
[:::image type="content" source="./media/concepts-storage-iops/1-overview.png" alt-text="Screenshot of overview metrics.":::](./media/concepts-storage-iops/1-overview.png#lightbox)
40+
41+
#### Enhanced Metrics Workbook
42+
- Navigate to Workbooks under Monitoring section on your Azure portal.
43+
- Select "Enhanced Metrics" workbook.
44+
- Check for Storage IO Percentage metrics under Overview section of the workbook.
45+
46+
[:::image type="content" source="./media/concepts-storage-iops/2-workbook.png" alt-text="Screenshot of enhanced metrics.":::](./media/concepts-storage-iops/2-workbook.png#lightbox)
47+
48+
#### Metrics under Monitoring
49+
- Navigate to Metrics, under Monitoring section on your Azure portal.
50+
- Select "Add metric" option.
51+
- Choose “Storage IO Percent” from the drop-down of available metrics.
52+
- Choose "Storage IO count" from the drop-down of available metrics.
53+
54+
[:::image type="content" source="./media/concepts-storage-iops/3-metrics.png" alt-text="Screenshot of monitoring metrics.":::](./media/concepts-storage-iops/3-metrics.png#lightbox)
55+
56+
57+
## Selecting the Optimal IOPS Setting
58+
59+
Having learned how to monitor your IOPS usage effectively, you're now equipped to explore the best settings for your server. When choosing the IOPS setting for your Azure Database for MySQL Flexible Server, several important factors should be considered. Understanding these factors can help you make an informed decision to ensure the best performance and cost-efficiency for your workload.
60+
61+
### Performance Optimization
62+
63+
With Autoscale IOPS, consistent requirements can be met for workload, which is predictable without facing the drawback of storage throttling and manual interaction to add more IOPS.
64+
If your workload has consistent throughput or requires consistent IOPS, Pre-provisioned IOPS may be preferable. It provides a predictable performance level, and the fixed allocation of IOPS correlates with workload within the specified limits.
65+
Although for any requirement of higher throughput from usual requirement, Additional IOPS can be allotted with Pre-provisioned IOPS, which requires manual interaction and understanding of throughput increase time.
66+
67+
### Throttling impact
68+
69+
Consider the impact of throttling on your workload. If the potential performance degradation due to throttling is a concern, Autoscale IOPS can dynamically handle workload spikes, minimizing the risk of throttling and maintaining performance to optimal level.
70+
71+
Ultimately, the decision between Autoscale and Pre-provisioned IOPS depends on your specific workload requirements and performance expectations. Analyze your workload patterns, evaluate the cost implications, and consider the potential impact of throttling to make an informed choice that aligns with your priorities.
72+
By considering the specific characteristics of your database workload, such as traffic fluctuations, query patterns, and performance requirements, you can make an informed decision regarding the choice between Autoscale and Pre-provisioned IOPS.
73+
74+
75+
| **Workload Considerations** | **Pre-Provisioned IOPS** | **Autoscale IOPS** |
76+
|---|---|---|
77+
| Workloads with consistent and predictable I/O patterns | Recommended as it utilizes only provisioned IOPS | Compatible, no manual provisioning of IOPS required |
78+
| Workloads with varying usage patterns | Not Recommended as it may not provide efficient performance during high usage periods. | Recommended as it automatically adjusts to handle varying workloads |
79+
| Workloads with dynamic growth or changing performance need | Not recommended as it requires constant adjustments as per changing IOPS requirement | Recommended as no extra settings is required for specific throughput requirement |
80+
81+
### Cost considerations
82+
If you have a fluctuating workload with unpredictable peaks, opting for Autoscale IOPS may be more cost-effective. It ensures that you only pay for the higher IOPS used during peak periods, offering flexibility and cost savings. Pre-provisioned IOPS, while providing consistent and max IOPS, may come at a higher cost depending on the workload. Consider the trade-off between cost and performance required from your server.
83+
84+
### Test and Evaluate
85+
If unsure about the optimal IOPS setting, consider running performance tests using both Autoscale IOPS and Pre-provisioned IOPS. Assess the results and determine which setting meets your workload requirements and performance expectations.
86+
87+
**Example workloads: E-commerce websites**
88+
89+
If you own an e-commerce website that experiences fluctuations in traffic throughout the year. During normal periods, the workload is moderate, but during holiday seasons or special promotions, the traffic surges exponentially.
90+
91+
Autoscale IOPS: With Autoscale IOPS, your database can dynamically adjust its IOPS to handle the increased workload during peak periods. When traffic spikes, such as during Black Friday sales, the auto scale feature allows your database to seamlessly scale up the IOPS to meet the demand. This ensures smooth and uninterrupted performance, preventing slowdowns or service disruptions. After the peak period, when the traffic subsides, the IOPS scale back down, allowing for cost savings as you only pay for the resources utilized during the surge.
92+
93+
Pre-provisioned IOPS: If you opt for pre-provisioned IOPS, you need to estimate the maximum workload capacity and allocate a fixed number of IOPS accordingly. However, during peak periods, the workload might exceed the predetermined IOPS limit. As a result, the storage I/O could throttle, impacting performance and potentially causing delays or timeouts for your users.
94+
95+
**Example workloads: Reporting /Data Analytics Platforms**
96+
97+
Suppose you have Azure Database for MySQL Flexible Server used for data analytics where users submit complex queries and large-scale data processing tasks.
98+
The workload pattern is relatively consistent, with a steady flow of queries throughout the day.
99+
100+
Pre-provisioned IOPS: With pre-provisioned IOPS, you can select a suitable number of IOPS based on the expected workload. As long as the chosen IOPS adequately handle the daily query volume, there's no risk of throttling or performance degradation. This approach provides cost predictability and allows you to optimize resources efficiently without the need for dynamic scaling.
101+
102+
Autoscale IOPS: The Autoscale feature might not provide significant advantages in this case. Since the workload is consistent, the database can be provisioned with a fixed number of IOPS that comfortably meets the demand. Autoscaling might not be necessary as there are no sudden bursts of activity that require additional IOPS. By using Pre-provisioned IOPS, you have predictable performance without the need for scaling, and the cost is directly tied to the allocated storage.
103+
104+
105+
## Frequent Asked Questions
106+
107+
#### How to move from pre-provisioned IOPS to Autoscale IOPS?
108+
- Access your Azure portal and locate the relevant Azure database for MySQL Flexible Server.
109+
- Go to the Settings blade and choose the Compute + Storage section.
110+
- Within the IOPS section, opt for Auto Scale IOPS and save the settings to apply the modifications.
111+
112+
#### How soon does Autoscale IOPS take effect after making the change?
113+
Once you enable Autoscale IOPS for your Azure database for MySQL Flexible Server and save the settings, the changes take effect immediately after the deployment to the resource has completed successfully. This means that the Autoscale IOPS feature will be applied to your database without any delay.
114+
115+
#### How to know when IOPS have scaled up and scaled down when the server is using Autoscale IOPS feature? Or Can I monitor IOPS usage for my server?
116+
Refer to [“Monitor Storage performance”](#monitor-storage-performance) section, which will help to identify if your server has scaled up or scaled down during specific time window.
117+
118+
#### Can I switch between Autoscale IOPS and pre-provisioned IOPS later?
119+
Yes, you can move back to pre-provisioned IOPS by opting for pre-provisioned IOPS under Compute + Storage section under Settings blade.
120+
121+
#### How do I know how much IOPS have been utilized for Azure database for MySQL Flexible Server?
122+
My navigating to Monitoring under Overview section. Or navigate to [IO count metrics](./concepts-monitoring.md#list-of-metrics) under Monitoring blade. IO count metric gives sum of IOPS used by server in the selected timeframe.
123+
124+
125+
126+
## Next steps
127+
- Learn more about [service limitations](./concepts-limitations.md).
128+
- Learn more about [Pricing](./concepts-service-tiers-storage.md#pricing) information.
129+
130+
131+
42.5 KB
Loading
62.6 KB
Loading
89.5 KB
Loading

0 commit comments

Comments
 (0)