Azure表存储缓慢更新记录

时间:2013-10-25 09:40:13

标签: azure azure-table-storage

我有一个Azure表,它存储了由代码的第一个字母分隔的1000个折扣代码,因此大约有30个分区,每个分区有1000条记录。在我的应用程序中,我输入一个代码并从表中获取特定记录。然后,我更新折扣代码,说它已被使用。当使用1000个并发用户加载测试此应用程序30秒时,读取代码的响应时间不到1秒,但更新记录需要10秒以上。这是表存储的典型行为还是有办法加快速度?

//update discount code

string code = "A0099"; 

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("constring...");

CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

CloudTable table = tableClient.GetTableReference("discounts");            

string partitionKey = code[0].ToString().ToUpper();

TableOperation retrieveOperation = TableOperation.Retrieve<DiscountEntity>(partitionKey, code);

TableResult retrievedResult = table.Execute(retrieveOperation);

if (retrievedResult.Result != null) {

    DiscountEntity discount = (DiscountEntity)retrievedResult.Result;

    discount.Used = true;

    TableOperation updateOperation = TableOperation.Replace(discount);

    table.Execute(updateOperation);

}

2 个答案:

答案 0 :(得分:0)

这不是默认行为,但我之前已经看过了......首先检查你的vm大小,因为vm大小越大,I / O越快(某个地方的MS doc就是这样说的)胖VM拥有快速I / O&#34;或类似的东西......)但是10秒甚至对于超小vm来说......

为了加快速度,我建议你:

  • 实现缓存!,而不是一次搜索1个代码,捕获整个&#34;字母&#34;一次未使用的代码,缓存它们,然后在缓存中搜索要更新的人
  • 不要实时更新,而是更新缓存,然后使用异步方法保存回来

答案 1 :(得分:0)

您可以检查的一件事是特定请求的E2E时间与服务器处理请求所花费的时间。这将允许您查看瓶颈是客户端/网络还是服务器。

有关启用Windows Azure存储分析(特别是日志记录)的详细信息,请参阅How To Monitor a Storage AccountStorage Analytics文章。