我想评估一下我的Windows Azure Table商店查询规模。为此,我将一个简单的测试环境放在一起,我可以增加表中的数据量,并测量查询的执行时间。基于我想定义一个可用于评估未来查询性能的成本函数的时间。
我评估了以下查询:
对于最后两个查询,我检查了以下两种模式:
为了最大限度地减少传输延迟,我在Azure实例上执行了测试。根据测量结果,我可以看到
你能解释一下查询/过滤器解释器的内部吗?即使我们接受查询3.1需要分区扫描,查询4.1也可以使用相同的逻辑(并在同一时间)进行评估。查询3.2和4.2对我来说似乎是一个谜。关于那些的任何指针?
显然,这一点的重点是,我想在一个查询中查询不同的元素,以最大限度地降低成本,同时不会失去性能。但似乎对每个元素使用单独的查询(使用任务并行库)是唯一真正的快速解决方案。这种做法的可接受方式是什么?
答案 0 :(得分:2)
使用3.2和4.2这样的查询,将逐个完整的分区扫描以及属性。即使这些分区位于两台不同的计算机上,查询也不会并行运行,这就是为什么你看到这么长时间执行的原因。这是因为Windows Azure没有对查询进行查询优化。以某种方式编写代码可以使它们并行运行。
如果您希望获得更快的性能,那么您是正确的,您需要使用任务并行库并行运行查询以获得更高的性能。
答案 1 :(得分:1)
由于表存储内部实现的细节不公开,如果您想评估未来查询的性能,我建议您查看http://blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/how-to-get-most-out-of-windows-azure-tables.aspx以获取最佳实践。
最诚挚的问候,
徐明。