在小型表

时间:2015-06-13 07:46:58

标签: azure azure-table-storage

我正在尝试对搜索/阅读进行基准测试在小尺寸的ATS上插入查询(500个实体)。平均插入时间为400毫秒,平均搜索+检索时间为190毫秒。

插入时,我正在查询分区键,条件本身只由一个谓词组成:[PartitionKey] eq <value>(不再是ands / ors)。此外,我只返回一个属性。

这种结果可能是什么原因?

搜索代码:

TableQuery<DynamicTableEntity> projectionQuery = new TableQuery<DynamicTableEntity>().Select(new string[] { "State" });
        projectionQuery.Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "" + msg.PartitionKey));
        // Define an entity resolver to work with the entity after retrieval.
        EntityResolver<bool?> resolver = (pk, rk, ts, props, etag) => props.ContainsKey("State") ? (props["State"].BooleanValue) : null;
        Stopwatch sw = new Stopwatch();
        sw.Start();
        List<bool?> sList = table.ExecuteQuery(projectionQuery, resolver, null, null).ToList();
        sw.Stop();

插入代码:

CloudTable table = tableClient.GetTableReference("Messages");
        TableOperation insertOperation = TableOperation.Insert(msg);
        Stopwatch sw = new Stopwatch();
        // Execute the insert operation.
        sw.Start();
        table.Execute(insertOperation);
        sw.Stop();

2 个答案:

答案 0 :(得分:1)

来自SLA Document

  

存储

     

我们保证至少99.99%的时间,我们会成功   处理从Read Access-Geo Redundant Storage读取数据的请求   (RA-GRS)帐户,前提是尝试从中读取数据失败   主要区域在次要区域重试。

     
      
  • 我们保证至少99.9%的时间,我们将成功处理从本地冗余存储(LRS)读取数据的请求,   区域冗余存储(ZRS)和地理冗余存储(GRS)   帐户。

  •   
  • 我们保证至少99.9%的时间,我们将成功处理将数据写入本地冗余存储(LRS)的请求,   区域冗余存储(ZRS)和地理冗余存储(GRS)帐户   和读取访问 - 地理冗余存储(RA-GRS)帐户。

  •   

还有refereed document

  

表格查询/列表操作
    最长处理时间十(10)   秒(完成处理或返回继续)

没有快速/低响应时间的承诺。也没有任何关于在较小的桌子上加快速度的承诺。

答案 1 :(得分:1)

您可以参考此帖子了解可能的性能问题:Microsoft Azure Storage Performance and Scalability Checklist

您只能获得一个属性的原因是您正在使用EntityResolver,请尝试删除它。有关Windows Azure Storage Client Library 2.0 Tables Deep Dive的使用情况,请参阅EntityResolver - 何时使用以及如何正确使用。