【问题标题】:Fast import into MongoDb快速导入 MongoDb
【发布时间】:2010-08-26 09:44:45
【问题描述】:

我有大约 200 万个不同长度的字符串需要压缩并作为文件放入 MongoDb GridFS。

字符串当前存储在表的 MS SQL TEXT 字段中。我编写了一个示例应用程序来读取每一行,对其进行压缩并将其存储为 GridFS 文件。

有一个阅读器和一个由 50 个线程组成的线程池来存储结果。它可以工作,但速度很慢(平均每秒 100 条记录)。

我想知道是否有任何方法可以更快地导入 GridFS?

我在 Windows 上使用 MongoDb 1.6 和 C# 和 .NET 中的 MongoCSharp 驱动程序。

【问题讨论】:

  • 50 个线程听起来很多。您确定它们不会导致缓慢(过度锁定和线程切换开销)吗?

标签: c# mongodb gridfs


【解决方案1】:

我想我是通过在运行一个非常简单的应用程序(将 1000 个字符串放入 1000 个 GridFS 文件)时对其进行分析发现了 MongoDb CSharp 驱动程序中的问题。

事实证明,97% 的时间都花在了检查集合中是否存在具有相同文件名的文件上。我在文件名字段上添加了一个索引,现在它的速度非常快!

我的问题是,如果驱动程序需要保持文件名的唯一性并进行检查,为什么不为其添加唯一索引?这背后的原因是什么?

【讨论】:

  • 这很奇怪。文件名在 GridFS 中不必是唯一的,因为已经有 _id 主键,对吧?
  • 我不确定 GridFS 规范,但使用 MongoDbCSharp 库分析示例应用程序肯定会检查文件是否存在并且如果不存在则抛出异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2015-08-20
相关资源
最近更新 更多