每秒处理请求单位 (RUs/s) DocumentDB 中的峰值

Handling Request Units per Second (RUs/s) Spikes in DocumentDB

使用 DocumentDB 最困难的事情之一是计算您每天需要 运行 您的应用程序每秒多少个请求单位 (RUs/s),但在使用高峰期间也是如此。当你弄错时,DocumentDB 客户端会抛出异常,这是一个糟糕的使用模型。

如果我的应用程序在一天中的特定时间每秒使用更多的请求单位数 (RUs/s),那么我该如何在 DocumentDB 中处理这个问题?我不想整天设置非常高的 RUs/s,因为我会相应地被收费。我也不想每次都登录到 Azure 门户。

您可以在 Azure 上创建一个作业,仅在一天中需要的时候扩大集合的吞吐量,然后再缩小。

如果您的目标是 .NET 中的 DocumentDB,this Azure article 有示例代码展示了如何使用 .NET SDK 更改吞吐量。

article 中引用的具体 (C# .NET) 代码如下所示:

//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);

// Set the throughput to S2
offer = new Offer(offer);
offer.OfferType = "S2";

//Now persist these changes to the database by replacing the original resource
await client.ReplaceOfferAsync(offer);

我假设其他语言的 DocumentDB SDK 具有相同的功能。

此外,您可以从 Azure article found here 使用 PowerShell 更改服务级别。

$ResourceGroupName = "resourceGroupName"

$ServerName = "serverName"
$DatabaseName = "databaseName"

$NewEdition = "Standard"
$NewPricingTier = "S2"

$ScaleRequest = Set-AzureRmSqlDatabase -DatabaseName $DatabaseName -   ServerName $ServerName -ResourceGroupName $ResourceGroupName -Edition     $NewEdition -RequestedServiceObjectiveName $NewPricingTier