Ruby并行/多线程编程读取庞大的数据库

pr4*_*r4n 6 ruby multithreading multicore

我有一个ruby脚本读取一个巨大的表(约20米行),做一些处理并将其送到Solr进行索引.这是我们流程中的一大瓶颈.我打算在这里加快速度,我想实现某种并行性.我对Ruby的多线程性质感到困惑.我们的服务器有 ruby 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux].从这篇博客文章StackOverflow上的这个问题可以看出,Ruby没有"真正的"多线程方法.我们的服务器有多个内核,所以使用parallel gem似乎是另一种方法.

我应该采用什么方法?此外,对并行数据库读取馈电系统的任何输入都将受到高度赞赏.

Jon*_*röm 1

有机会升级到 Ruby 1.9 吗?它通常比 1.8.7 更快。

Ruby 确实受到GIL 的困扰,但如果多线程可以解决您的问题,那么您可以看看JRuby,因为它支持真正的线程。

另外,您最好确保 CPU 是瓶颈,因为如果是 I/O 多线程,可能不会给您带来太多好处。