Azure DocumentDB 使用 Premium SSD v2 磁盘通过从 IOPS 和带宽设置中取消耦合存储容量,为 I/O 密集型工作负荷提供显著更高的性能。
使用 Azure DocumentDB 上的高级 SSD v2 存储时,无论为群集配置的存储容量如何,默认都可以使用可配置的最大 IOPS 和带宽设置。 计算层的 IOPS 和带宽容量决定了存储层中可实现的 IOPS 和带宽,而无需纵向扩展存储容量。
只需选择所需的存储容量,而最高可实现的 IOPS 和带宽由 Azure DocumentDB 自动配置,无需额外成本。 无需额外的用户干预来确保为最佳性能设置群集。 结果是 12 倍的性能提升,无需额外成本。
以前,从 5,000 IOPS 跃升到 20,000 IOPS,需要将磁盘的大小从 1TB 增加到 20TB,即使在缺少更高的存储需求的情况下也是如此。 使用高级 SSD v2,只要群集的计算层具有推送和维护 20,000 IOPS 的容量,就可以在同一 1TB 磁盘上实现 20,000 IOPS。 此外,高级 SSD v2 磁盘最多可支持 80,000 IOPS - 比高级 SSD 增加 4 倍。
Guidance
Azure DocumentDB 群集的 maximum 性能现在仅依赖于 计算层而不是存储大小。 首先选择群集所需的所需存储大小,然后选择一个计算层,该计算层为工作负荷提供所需的(IOPS)和吞吐量(MBps)。 下面列出的表格是每个计算层实现的最高可实现且可持续的 IOPS 和带宽限制。
IOPS 和吞吐量上限
使用高级 SSD v2 磁盘时,群集会自动配置如下表所示的上限值,无需额外付费。
| 计算层 | 最大 IOPS | 最大带宽(MBps) |
|---|---|---|
| M30 (2 核) | 3,750 | 85 |
| M40 (4 核) | 6,400 | 145 |
| M50 (8 核) | 12,800 | 290 |
| M60 (16 核) | 25,600 | 600 |
| M80 (32 核) | 五万一千二百 | 865 |
| M200 (64 核) | 80,000 | 1,200 |
先决条件
Azure 订阅服务
- 如果没有 Azure 订阅,请创建 试用版
现有的 Azure DocumentDB 群集
- 如果没有群集,请 创建新群集
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 将扩展与 Azure CLI 配合使用。
运行az version命令,以查看已安装的版本和依赖库。 若要升级到最新版本,请运行az upgrade。
- Terraform 1.2.0 或更高版本。
创建具有高性能存储的群集
使用 高级 SSD v2 (高性能)存储配置群集,作为群集创建步骤的一部分。
登录到 Azure 门户 (https://portal.azure.cn)。
在 Azure 门户菜单或主页中,选择“创建资源” 。
在 “新建 ”页上,搜索并选择 Azure DocumentDB。
在“创建 Azure DocumentDB 群集”页和“基本信息”部分中,选择“群集层”部分中的“配置”选项。
在 “配置 ”页上,根据需要选择群集层和存储大小。 选择存储类型作为 高级 SSD v2 以启用高性能存储,然后选择“保存”以应用更改。
填写剩余的详细信息,然后选择“ 查看 + 创建”。
查看提供的设置,然后选择“创建”。 创建群集需要几分钟时间。 等待资源部署完成。
最后,选择转到资源以前往门户中的 Azure DocumentDB 集群。
打开新的终端。
登录到 Azure CLI。
创建新的 Bicep 文件以定义角色定义。 将文件命名 为 main.bicep。
将此模板添加到文件的内容。 将
<cluster-name>、<location>、<username>和<password>占位符替换为适当的值。resource cluster 'Microsoft.DocumentDB/mongoClusters@2025-09-01' = { name: '<cluster-name>' location: '<location>' properties: { administrator: { userName: '<username>' password: '<password>' } serverVersion: '8.0' storage: { sizeGb: 32 type: 'PremiumSSDv2' } compute: { tier: 'M30' } sharding: { shardCount: 1 } highAvailability: { targetMode: 'Disabled' } } }使用
az deployment group create部署 Bicep 模板。 指定 Bicep 模板的名称,并将占位符替换为<resource-group>目标 Azure 资源组的名称。az deployment group create \ --resource-group "<resource-group>" \ --template-file main.bicep等待部署完成。 查看部署的输出。
打开新的终端。
登录到 Azure CLI。
检查目标 Azure 订阅。
az account show在新 Terraform 文件中定义群集。 将文件 命名为 cluster.
tf。将此资源配置添加到文件的内容。 请将
<cluster-name>、<resource-group>和<location>占位符替换为相应的值。variable "admin_username" { type = string description = "Administrator username for the cluster." sensitive = true } variable "admin_password" { type = string description = "Administrator password for the cluster." sensitive = true } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_resource_group" "existing" { name = "<resource-group>" } resource "azurerm_mongo_cluster" "cluster" { name = "<cluster-name>" resource_group_name = data.azurerm_resource_group.existing.name location = "<location>" administrator_username = var.admin_username administrator_password = var.admin_password shard_count = "1" compute_tier = "M30" high_availability_mode = "Disabled" storage_size_in_gb = "32" storage_type = "PremiumSSDv2" version = "8.0" }小窍门
有关使用
azurerm_mongo_cluster资源的选项的详细信息,请参阅azurermTerraform 注册表中的提供程序文档。初始化 Terraform 部署。
terraform init --upgrade创建执行计划并将其保存到名为 cluster.tfplan 的文件。 当系统提示输入
admin_username和admin_password变量时提供值。ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --out "cluster.tfplan"注释
此命令暂时设置
ARM_SUBSCRIPTION_ID环境变量。 自版本 4.0 起,azurerm提供程序需要此设置。有关详细信息,请参阅azurerm中的订阅 ID。应用执行计划将群集部署到 Azure。
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "cluster.tfplan"等待部署完成。 查看部署的输出。
打开新的终端。
登录到 Azure CLI。
创建名为 cluster.json的新 JSON 文件。
将此文档添加到文件的内容。 请将
<location>、<username>和<password>占位符替换为相应的值。{ "location": "<location>", "properties": { "administrator": { "userName": "<username>", "password": "<password>" }, "serverVersion": "8.0", "storage": { "sizeGb": 32, "type": "PremiumSSDv2" }, "compute": { "tier": "M30" }, "sharding": { "shardCount": 1 }, "highAvailability": { "targetMode": "Disabled" } } }az rest使用 Azure CLI 命令创建包含 JSON 文件中指定的配置的新群集。 在请求中将 JSON 文件的名称指定为body,并替换以下占位符:Description <subscription-id>目标 Azure 订阅的唯一标识符 <resource-group>目标 Azure 资源组的名称 <cluster-name>新 Azure DocumentDB 群集的唯一名称 az rest \ --method "GET" \ --url "https://management.chinacloudapi.cn/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01" \ --body @cluster.json小窍门
使用
az account show获取目标 Azure 订阅的唯一标识符。等待部署完成。 查看部署的输出。
高性能存储的当前限制(高级 SSD v2 存储)
高级 SSD v2 存储不支持客户管理的密钥(CMK)。
高级 SSD v2 磁盘上的存储容量设置可在 24 小时内最多调整四次。 对于新创建的群集,最多可以在前 24 小时内进行三次存储容量调整。
仅迁移方案支持从高级 SSD 复制到高级 SSD v2。 不支持正在进行的复制,因为高级 SSD 无法匹配高级 SSD v2 的性能,并可能导致更高的延迟。
目前不支持从高级 SSD 联机迁移到高级 SSD v2。 若要从高级 SSD 升级到高级 SSD V2,您可以使用高级 SSD V2 执行时间点恢复到新服务器。 或者,可以创建从高级 SSD 服务器到高级 SSD v2 服务器的只读副本,并在复制完成后将其提升。
如果执行任何需要磁盘冻结的操作,则可能会发生以下错误。 发生此错误是因为高级 SSD V2型磁盘在磁盘仍在填充时不支持任何操作。
- 错误消息:无法完成操作,因为磁盘仍在冻结。 请稍后重试。
- 可以触发此行为的操作包括:
- 执行计算缩放、存储缩放、快速连续启用高可用性(HA)。
- 这还包括由服务触发的故障转移,以确保高可用性。
- 使用 PITR(时间点还原)创建新的集群,并在磁盘仍在进行水化时立即启用高可用性。
- 最佳做法是,使用高级 SSD v2 磁盘时,请超时这些操作或按顺序完成这些操作,确保磁盘冻结在操作之间完成。