Important
本文中讨论的 S1、S2 和 S3 性能级别即将停用,不再可用于新的 Azure Cosmos DB 帐户。
本文概述 S1、S2 和 S3 性能级别,并介绍如何将使用这些性能级别的集合迁移到单分区集合。 阅读本文之后,能够回答以下问题:
- 为何要停用 S1、S2 和 S3 性能级别?
- 单区集合和分区集合与 S1、S2、S3 性能级别有哪些区别?
- 我需要做些什么才能确保不间断地访问我的数据?
- 迁移后,集合会发生怎样的变化?
- 迁移到单分区集合后,帐单会发生怎样的变化?
- 如果需要 20 GB 以上的存储,怎么办?
- 在计划的迁移期限之前,是否可以在 S1、S2 和 S3 性能级别之间切换?
- 如何自行从 S1、S2、S3 性能级别迁移到单区集合?
- 我是 EA 客户,会有哪些影响?
为何要停用 S1、S2 和 S3 性能级别?
S1、S2 和 S3 性能级别无法提供标准 Azure Cosmos DB 产品提供的灵活性。 使用 S1、S2、S3 性能级别时,吞吐量和存储容量都是预设的,没有任何弹性。 Azure Cosmos DB 现在提供自定义吞吐量和存储的功能,让用户能够更灵活地调整以满足需求变化。
单区集合和分区集合与 S1、S2、S3 性能级别有哪些区别?
下表比较了单个分区集合、分区集合和 S1、S2、S3 性能级别中可用的吞吐量和存储选项。 下面是美国东部 2 区域的一个示例:
| 配额名称 | 分区式集合 | 单分区集合 | S1 | S2 | S3 |
|---|---|---|---|---|---|
| 最大吞吐量 | Unlimited | 10K RU/秒 | 250 RU/秒 | 1 K RU/秒 | 2.5 K RU/秒 |
| 最小吞吐量 | 2.5 K RU/秒 | 400 RU/秒 | 250 RU/秒 | 1 K RU/秒 | 2.5 K RU/秒 |
| 最大存储 | Unlimited | 20 GB | 20 GB | 20 GB | 20 GB |
| 价格(每月) | 吞吐量:6 美元/100 RU/秒 存储:0.25 美元/GB |
吞吐量:6 美元/100 RU/秒 存储:0.25 美元/GB |
25 美元 | 50 美元 | 100 美元 |
是 EA 客户吗? 如果是,请参阅 如果我是 EA 客户,我会受到怎样的影响?
为了确保我能够不间断地访问我的数据,我需要做些什么?
如果有 S1、S2 或 S3 集合,则应使用 .NET SDK 以编程方式将该集合迁移到单分区集合。
迁移后,集合会发生怎样的变化?
如果有 S1 集合,可以将该集合迁移到吞吐量为 400 RU/秒的单分区集合。 400 RU/s 是单分区集合提供的最低吞吐量。 但是,单分区集合中 400 RU/秒吞吐量的费用大致与 S1 集合中 250 RU/秒吞吐量的费用相同 - 因此,不需要为额外的 150 RU/秒付费。
如果有 S2 集合,可以将该集合迁移到吞吐量为 1000 RU/秒的单分区集合。 您的吞吐量级别不会发生变化。
如果有 S3 集合,可以将该集合迁移到吞吐量为 2500 RU/秒的单分区集合。 您的吞吐量级别不会发生变化。
对于上面的每种情况,在迁移集合后,便可以根据需要自定义吞吐量级别,或者将它调高和调低,以便向用户提供低延迟的访问。
迁移到单分区集合后,帐单会发生怎样的变化?
假设你在美国东部区域使用 10 个 S1 集合,其中每个集合的存储为 1 GB,现在要将这 10 个 S1 集合迁移到吞吐量为 400 RU/秒(最低级别)的 10 个单分区集合。 如果将 10 个单分区集合保留一整月,帐单将如下所示:
在计划的迁移期限之前,是否可以在 S1、S2 和 S3 性能级别之间切换?
只有具有 S1、S2 和 S3 性能的现有帐户才能通过使用 .NET SDK 以编程方式更改性能级别层。 如果从 S1、S3 或 S3 切换到了单区集合,则无法恢复到 S1、S2 或 S3 性能级别。
如何自行从 S1、S2、S3 性能级别迁移到单区集合?
可以使用 .NET SDK 以编程方式从 S1、S2 和 S3 性能级别迁移到单分区集合。 您可以在计划的迁移之前自行完成此操作,以利用单分区集合提供的灵活吞吐量选项。
使用 .NET SDK 迁移到单分区集合
本部分仅介绍如何使用 SQL .NET API 更改集合的性能级别,但此过程与其他 SDK 类似。
以下代码片段可将集合吞吐量更改为每秒 5,000 个请求单位:
//Fetch the resource to be updated
Offer offer = client.CreateOfferQuery()
.Where(r => r.ResourceLink == collection.SelfLink)
.AsEnumerable()
.SingleOrDefault();
// Set the throughput to 5000 request units per second
offer = new OfferV2(offer, 5000);
//Now persist these changes to the database by replacing the original resource
await client.ReplaceOfferAsync(offer);
请访问 MSDN 以查看其他示例并了解更多有关服务方法的信息:
作为 EA 客户,我会受到怎样的影响?
在当前合同到期之前,EA 客户的价格将得到保护。
后续步骤
若要详细了解如何使用 Azure Cosmos DB 定价和管理数据,请浏览以下资源:
- 在 Azure Cosmos DB中对数据进行分区。 了解单区容器与分区容器的差异,以及有关实施分区策略以进行无缝缩放的提示。
- Azure Cosmos DB 定价。 了解关于配置吞吐量和存储消耗成本的信息。
- 请求单位。 了解不同操作类型(例如读取、写入和查询)的吞吐量消耗。