短版:我们能否以多线程的方式从数十个或数百个表分区中读取,从而将性能提高几个数量级?
长版:我们正在开发一个在 Azure 表存储中存储数百万行的系统。我们将数据分成小分区,每个分区包含大约 500 条记录,代表一个单元一天的数据。
由于 Azure 没有“求和”功能,要提取一年的数据,我们要么必须使用一些预缓存,要么自己在 Azure Web 或辅助角色中对数据进行求和。
假设如下: - 读取一个分区不会影响另一个分区的性能 - 读取一个分区存在基于网络速度和服务器检索的瓶颈
然后我们可以猜测,如果我们想快速汇总大量数据(1 年,365 个分区),我们可以使用大规模并行算法,它几乎可以完美地扩展到线程数。例如,我们可以使用具有 50 多个线程的 .NET 并行扩展并获得巨大的性能提升。
我们正在做一些实验,但我想看看以前是否做过。由于 .NET 端基本上是空闲等待高延迟操作,这对于多线程来说似乎是完美的。