Dou*_*ter 5 performance azure azure-table-storage
从我的PartitionKey是用来加载跨多个服务器平衡表中的MS PDC演讲理解,但似乎没有人给出的PartitionKey是用作内的单个服务器索引任何意见.
同样,每个人都会告诉你,指定PartitionKey和RowKey让你出色的性能,但似乎没有人告诉你,如果RowKey被用来改善内PartitionKey性能.
以下是一些示例查询,可帮助我构建问题.假设整个表包含100,000,000行.
这是我的问题:
Tay*_*ird 15
在ATS中,PartitionKey用作分布查找,而不是索引.从使用ATS的级别来看,只需考虑PartitionKey和"server"/ node来共享1:1的关系. (在幕后这不是真的,但是优化PartitionKeys这些碰巧驻留在同一物理/虚拟节点上的概念被抽象出来与Azure的消费者必须处理的几个级别.这些细节纯粹是内部的整体Azure基础设施,在ATS的情况下,最好假设它是最佳的,因为它可以...又名"不要担心它")
在DBMS与ATS的上下文中,RowKey是最接近"索引"的东西,因为它有助于在类似节点上查找数据.要直接回答您的一个问题,RowKey是PartitionKey中的索引.
然而,稍微走出盒子,PartitionKey可以为您提供更接近您对传统索引的看法,但仅仅是因为您的数据如何在ATS节点之间传播的分布式特性.您应该将布局1st优化到PartitionKey,然后再优化到RowKey.(也就是说,如果你只有一个可键控的值,那就把它作为PartKey)
一般来说,查询将按此顺序执行,从最高效到最低效
因为查找到达正确的节点,然后到达分区上的索引prop
因为你到达了正确的节点,但后来到了ATS equvi.全表扫描
因为你必须进行分区扫描,然后进行表扫描
有了这个,直接问题
我觉得这不能回答.它的主观性(即"什么是快?").它总是比Query2慢,但有10行,"慢"可能是毫秒,如果是偶数
(类似的主题)它会比Query 1更快.你可以随时执行Query2
因此,通过这种解释和您的问题,真正的答案归结为您的架构师如何使用ATS.
根据您的数据集(当前和预期的增长),您需要确定一个合适的方案,以便您可以以最快的方式进入您的分区和您的行.知道查找是如何发生的,您可以做出逻辑决策,确定哪条路径足够快,更多部分,更少行,更少部分,更多行等等.