Azure 表存储查询性能

Posted

技术标签:

【中文标题】Azure 表存储查询性能【英文标题】:Azure Table Storage Query Performance 【发布时间】:2017-07-13 08:57:49 【问题描述】:

如果您知道确切的分区键和行键,表存储查询的性能是否会有很大差异?

我们为 RowKey 使用日期时间并获取最新条目,我们检索一天的所有内容,然后在代码中对其进行排序。

PartitionKey eq '123456' and RowKey ge '20170713000000000' and RowKey le '20170714000000000' 

这会更快地从表存储中检索记录吗?

PartitionKey eq '123456' and RowKey eq '20170713101000000' 

【问题讨论】:

【参考方案1】:

PartitionKey eq '123456' 和 RowKey eq '20170713101000000'

这个查询肯定会比

PartitionKey eq '123456' 和 RowKey ge '20170713000000000' 和 RowKey '20170714000000000'

第一个查询使用所有可用的索引(PartitionKeyRowKey)并且是一个点查询。

第二个查询也很有效(虽然不如第一个查询多),因为它只在单个分区中搜索,但它正在执行所谓的Partition Scan。此查询将转到所需的分区,然后搜索匹配的 RowKey 值。随着分区中实体数量的增加,您会注意到第二个查询的性能下降。

【讨论】:

以上是关于Azure 表存储查询性能的主要内容,如果未能解决你的问题,请参考以下文章

使用分区键、行键和非索引的 Azure 表查询性能

Azure表存储查询使用Python-读取整数列

AZURE 表存储、ODATA 和更友好的 URI 查询

从 Azure 表存储的千万条记录中查询一条记录

如何从 azure 表存储中编写组合查询?

使用 Rest Api 查询 Azure 表存储