Performance 使用部分行键时是否对Azure表存储进行索引查询?
我从MS PDC演示中了解到,PartitionKey用于跨多个服务器对表进行负载平衡,但似乎没有人就PartitionKey是否用作单个服务器中的索引给出任何建议 同样,每个人都会告诉您,指定PartitionKey和RowKey可以获得很好的性能,但是似乎没有人告诉您RowKey是否用于提高PartitionKey中的性能 下面是一些示例查询,以帮助我确定问题的框架。假设整个表包含100000000行Performance 使用部分行键时是否对Azure表存储进行索引查询?,performance,azure,azure-table-storage,Performance,Azure,Azure Table Storage,我从MS PDC演示中了解到,PartitionKey用于跨多个服务器对表进行负载平衡,但似乎没有人就PartitionKey是否用作单个服务器中的索引给出任何建议 同样,每个人都会告诉您,指定PartitionKey和RowKey可以获得很好的性能,但是似乎没有人告诉您RowKey是否用于提高PartitionKey中的性能 下面是一些示例查询,以帮助我确定问题的框架。假设整个表包含100000000行 PartionKey=“123”和OtherField=“def” PartitionKe
- 如果每个分区中只有10行,查询1是否会很快
- 如果每个分区中有1000000行,查询2会快吗
有了这些,你就可以直接提问了
第二个查询将是“fast” 两者都应该相对较快 查询1必须在单个分区内进行完整扫描(ATS术语中的范围扫描),但这意味着要遍历10个实体 查询2还将导致范围扫描,但使用RowKey作为分区内的索引,因此它应该仍然很快
您可以获得一篇非常详细的博客文章,其中包括每个查询的所有性能影响,以及如何定义最佳键:除了Taylor的答案之外,类似的语句也适用于范围查询,如前所述
换句话说,Azure表存储实际上可以被认为只有一个索引,由两部分组成,分区键和范围键,按顺序排列。我认为自编写以来,有些事情可能已经发生了变化,但如果您阅读了这些内容,您可以得出一些结论 例如,可以在节点/物理服务器之间移动分区。如果有多个分区可以比单个分区更好地扩展。如果您有一个巨大的分区,那么您将受到单个分区吞吐量的限制 请注意,许多小分区(范围内连续)可以移动到单个节点/物理服务器。如果分区在逻辑上紧密地分组在一起(即排序),则跨分区扫描不必太慢 如果您需要分区密钥来处理超过2000 req/sec的请求,那么您必须找到一种将分区密钥拆分为多个分区的方法,否则,这并不重要 哦,而且您只能在单个分区键内执行实体组事务,这可能会影响您的设计 因此,总结一下:
- 你需要更多吗