2013-08-18 54 views
0

在我的应用程序中,我将要在数据库上保存一些文件。 我已经看到了有关是否保存在文件系统\ db并选择将文件保存在数据库上的争论。mongoDB做了一个巨大的集合影响其他集合的性能?

我的项目数据库是mongoDB。

我想知道我是否可以在我的mongoDB中说20个系列, ,而其中的一个非常大。 当我工作在其他(较小的)集合上时,我会看到性能影响吗?

如果那么我应该将这个集合与其他集合分开吗? (为这个庞大的集合单独创建另一个数据库)?

my-sql是否受到相同的影响?

谢谢。

+0

这将很大程度上取决于硬件的可用性,对数据库的估计读取/写入,IO吞吐量,文件的大小等。通过基准测试,您的问题的最佳答案是...... – kmfk

回答

0

这里有两个关键因素:

  1. 确保您的working set适合在内存中。这将意味着您的可用内存应该至少超过您用于读取的索引的总大小。
  2. MongoDB在v2.2之后有database level write lock。这意味着在任何写入操作期间,整个数据库都被锁定以进行读取。因此,对于大量批量插入到可能需要一段时间的单个集合中,所有其他集合在批量插入期间都被锁定。因此,如果将大集合分隔为单独的数据库,那么您的关键优势是对该集合的插入不会阻止读取其他数据库中的集合。

我建议首先确保您有足够的内存供您的工作集使用,其次我会将大集合分隔成一个单独的数据库,如果您打算将其写入很多。

相关问题