大规模并行螺纹读取的Azure表存储性能

简短版本:我们可以以多线程的方式从数十个或数百个表分区中读取数据,以提高数量级的性能吗?

长版本:我们正在研究一个将数百万行存储在Azure表存储中的系统。 我们将数据划分为小分区,每个小分区包含大约500条记录,代表一个单元的一天数据。

由于Azure没有“总和”功能,为了提取一年的数据,我们必须使用一些预缓存,或者在Azure网络或工作者角色中自行汇总数据。

假设如下: - 读取分区不会影响另一个分区的性能 - 读取分区有一个基于网络速度和服务器检索的瓶颈

然后,我们可以猜测,如果我们想快速汇总大量数据(1年,365个分区),我们可以使用大规模并行算法,并且它将几乎完美地扩展到线程数量。 例如,我们可以使用具有50多个线程的.NET并行扩展,并获得巨大的性能提升。

我们正在设置一些实验,但我想看看以前是否做过。 由于.NET端基本上处于等待高延迟操作的空闲状态,这对于多线程来说似乎非常完美。


对于特定时间段(大约500个请求/秒)的存储帐户和特定分区或存储服务器可执行的事务数量存在限制。 因此,从这个意义上说,对于可以并行执行的请求的数量有一个合理的限制(在它看起来像DoS攻击之前)。

另外,在实现中,我会警惕对客户端施加的并发连接限制,比如System.Net.ServicePointManager 。 我不确定Azure存储客户端是否受到这些限制; 他们可能需要调整。

链接地址: http://www.djcxy.com/p/48403.html

上一篇: Azure Table Storage Performance from Massively Parallel Threaded Reading

下一篇: Databinding to CLR property in code