= DateTime-6ren">
gpt4 book ai didi

azure - 使用分区键和范围 RowKey 时 Azure 表的查询性能降低

转载 作者:行者123 更新时间:2023-12-03 00:15:29 25 4
gpt4 key购买 nike

我对 Azure 表非常陌生,并且遇到了一些性能问题。我有一个查询,它使用分区键和范围行键来获取数千行。

PartitionKey = "Example123"且 RowKey >= DateTime.Now.Ticks 且 RowKey < DateTime.Now.AddHours(1).Ticks。
rowkey 是一个以 datetime.Ticks 字符串为前缀的 guid。

此查询需要2-3 秒才能返回 8000 个条目。这样合理吗?

示例条目:

A: "C6-85-08-07-06-98",
B: "C6-85-08-07-06-i1",
C: 123,
At: "2013-12-03T19:16:26.0799718Z",
PartitionKey: "example1",
RowKey: "635216949860799718_ca86be88-0995-4da8-90d6-351c615ec9ab",
Timestamp: "2013-12-03T19:16:36.5872058+00:00",
ETag: "W/"datetime'2013-12-03T19%3A16%3A36.5872058Z'""

示例代码
这是我正在使用的代码(SDK 2.1):

TableQuery<RawDataEntity> rangeQuery = new TableQuery<RawDataEntity>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, _partitionKey),
TableOperators.And,
IsWithin(from, to)
));

// returns after ~3000 ms
var result = _table.ExecuteQuery(rangeQuery).ToList();




// Helper method
public static string IsWithin(DateTime from, DateTime to)
{
return TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, from.Ticks.ToString()),
TableOperators.And,
TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThan, to.Ticks.ToString())

);
}

如果我的查询没有任何错误 - 还有哪些其他方法可以查询大型表(轻松超过 10k 行)并返回 10 000 多行数据?

最佳答案

考虑到 API 的工作原理,3 秒已经相当快了。如果您使用 Fiddler 等工具查看 API 如何返回数据,您可能会注意到您的数据是通过几个请求获取的。 API 使用分页来返回您的数据。

如果可能,我建议您使用多个并行查询来查询数据子集。

关于azure - 使用分区键和范围 RowKey 时 Azure 表的查询性能降低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20362747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com