我的任务是使用任意未知模式转储整个Azure表。执行此操作的标准代码类似于以下内容:
TableQuery<DynamicTableEntity> query = new TableQuery<DynamicTableEntity>();
foreach (DynamicTableEntity entity in table.ExecuteQuery(query))
{
// Write a dump of the entity (row).
}
根据表格,我的系统上的速率为每秒1000-3000行。我猜测这种(缺乏)性能与发出的单独的HTTP请求有关,这些请求是以块的形式检索数据的。不幸的是,有些表的大小是几千兆字节,所以这需要相当长的时间。
是否有一种很好的方法来并行化上述内容或以其他方式加快速度?看起来这些HTTP请求可以由多个线程发送,如在网络爬虫等中。但是,我没有立即采用这种方法。
答案 0 :(得分:1)
除非您知道表中实体的PartitionKeys
(或其他一些包含PartitionKey的查询条件),否则AFAIK您需要采取自上而下的方法。为了让您能够有效地并行激活查询,您必须在查询中包含PartitionKey。