我正在尝试对搜索/阅读进行基准测试在小尺寸的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();
答案 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)帐户。
表格查询/列表操作
最长处理时间十(10) 秒(完成处理或返回继续)
没有快速/低响应时间的承诺。也没有任何关于在较小的桌子上加快速度的承诺。
答案 1 :(得分:1)
您可以参考此帖子了解可能的性能问题:Microsoft Azure Storage Performance and Scalability Checklist。
您只能获得一个属性的原因是您正在使用EntityResolver,请尝试删除它。有关Windows Azure Storage Client Library 2.0 Tables Deep Dive的使用情况,请参阅EntityResolver - 何时使用以及如何正确使用。