加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何估算Windows Azure Table存储查询性能?

发布时间:2020-12-14 05:26:03 所属栏目:Windows 来源:网络整理
导读:我想评估一下我的 Windows Azure Table商店查询规模.为此,我将一个简单的测试环境放在一起,我可以增加表中的数据量,并测量查询的执行时间.基于时间我想定义一个可用于评估未来查询性能的成本函数. 我评估了以下查询: 使用PartitionKey和RowKey进行查询 使用
我想评估一下我的 Windows Azure Table商店查询规模.为此,我将一个简单的测试环境放在一起,我可以增加表中的数据量,并测量查询的执行时间.基于时间我想定义一个可用于评估未来查询性能的成本函数.

我评估了以下查询:

>使用PartitionKey和RowKey进行查询
>使用PartitionKey和属性进行查询
>使用PartitionKey和两个RowKeys进行查询
>使用PartitionKey和两个属性进行查询

对于最后两个查询,我检查了以下两种模式:

> PartitionKey ==“…”&& (RowKey ==“……”|| RowKey ==“……”)
>(PartitionKey ==“…”&&& RowKey ==“…”)|| (PartitionKey ==“…”&& RowKey ==“……”)

为了最大限度地减少传输延迟,我在Azure实例上执行了测试.根据测量结果,我可以看到

>查询1(毫不奇怪,因为表是基于这些字段编制索引的)非常快,如果我在表中有大约150000个条目,则大约10-15ms.
>查询2需要分区扫描,因此执行时间与存储的数据呈线性增长.
>查询3.1执行几乎与查询2完全相同.因此,此查询也使用完整的分区扫描执行,对我来说似乎有点奇怪.
>查询4.1比查询3.1慢两倍多.所以看起来它是用两个分区扫描进行评估的.
>最后,查询3.2和4.2的执行速度几乎比查询2慢4倍.

你能解释一下查询/过滤器解释器的内部吗?即使我们接受查询3.1需要分区扫描,查询4.1也可以使用相同的逻辑(并在同一时间)进行评估.查询3.2和4.2对我来说似乎是一个谜.关于那些的任何指针?

显然,这一点的重点是,我想在一个查询中查询不同的元素,以最大限度地降低成本,同时不会失去性能.但似乎对每个元素使用单独的查询(使用任务并行库)是唯一真正的快速解决方案.这样做的可接受方式是什么?

解决方法

使用3.2和4.2之类的查询,将逐个完整的分区扫描以及属性.即使这些分区位于两台不同的计算机上,查询也不会并行运行,这就是为什么你看到这么长时间执行的原因.这是因为Windows Azure没有对查询进行查询优化.以某种方式编写代码可以使它们并行运行.

如果您希望获得更快的性能,那么您就是正确的,您需要使用任务并行库并行运行查询以获得更高的性能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读