快速导入到MongoDb
我有大约200万个不同长度的字符串,我需要将它们压缩并放入MongoDb GridFS中作为文件。快速导入到MongoDb
这些字符串当前存储在表的MS SQL TEXT字段中。我编写了一个示例应用程序来读取每一行,将其压缩并存储为GridFS文件。
有一个读取器和50个线程存储结果的线程池。它可以工作,但速度很慢(平均每秒100条记录)。
我想知道是否有任何方法可以更快地导入到GridFS中?
我在Windows上使用MongoDb 1.6与C#和.NET中的MongoCSharp驱动程序。
我想我在MongoDb CSharp驱动程序里发现了这个问题,通过分析它来运行一个非常简单的应用程序,该应用程序将1000个字符串放入1000个GridFS文件中。
事实证明,97%的时间花在检查集合中是否存在具有相同文件名的文件。我在文件名字段中添加了一个索引,现在速度非常快!
对于我来说,问题是如果驱动程序需要保持文件名的唯一性并进行检查,那么为什么它没有为它添加唯一索引?这背后的原因是什么?
这很奇怪。文件名不必在GridFS中是唯一的,因为已经有_id主键,对吧? – Thilo 2010-08-28 06:04:25
我不确定GridFS规范,但使用MongoDbCSharp库分析示例应用程序肯定会显示它检查文件Exists *和*是否抛出异常(如果不是)。 – Khash 2010-08-28 15:58:35
khash,你可以发布一些代码来最好地理解,请。 – user325558 2011-03-07 13:59:58
50个线程听起来很多。你确定它们没有造成缓慢(过度锁定和线程切换开销)吗? – driis 2010-08-26 10:02:30