这是一段初始化 TableBatchOperation 的代码,该操作旨在一次批处理中检索两行:
TableBatchOperation batch = new TableBatchOperation();
batch.Add(TableOperation.Retrieve("somePartition", "rowKey1"));
batch.Add(TableOperation.Retrieve("somePartition", "rowKey2"));
//second call throws an ArgumentException:
//"A batch transaction with a retrieve operation cannot contain
//any other operation"
如前所述,抛出异常,并且似乎不支持在单个批次中检索 N 行。这对我来说很重要,因为每个请求我需要检索大约 50 行。这个问题在性能方面与成本方面一样重要。您可能知道,Azure 表存储定价基于事务量,这意味着 50 次检索操作的成本是单个批处理操作的 50 倍。
我错过了什么吗?
旁注 我正在使用新的 Azure Storage api 2.0。我注意到这个问题从未在网络上提出过。这个约束可能是最近添加的?
编辑
我在这里找到了一个相关的问题:Very Slow on Azure Table Storage Query on PartitionKey/RowKey List。似乎在行键上使用带有“或”的 TableQuery 将导致全表扫描。这里真的有一个很严重的问题...