MongoDB 2.2每个数据库都有一个写锁定,而不是先前版本中服务器上的全局写锁定。如果我将每个集合存储在一个单独的数据库中,以便有效地为每个集合设置一个写锁定,那就没关系了。(这将使它看起来像MyISAM的表级锁定)。这种方法有问题吗?
答案 0 :(得分:6)
锁定有一个关键限制,那就是local
数据库。该数据库包含用于复制的oplog
集合。
如果您正在生产中运行,则应该使用副本集运行。如果您正在使用副本集运行,则需要了解该数据库的写锁定效果。
如果它们都阻止等待oplog
,那么将10个集合分解为10个数据集是没用的。
在采取重大步骤重写之前,请确保oplog
不会导致问题。
另外,请注意MongoDB实现了DB级安全性。如果您正在使用任何安全功能,那么您现在正在创建更多要保护的数据库。
答案 1 :(得分:2)
是的,这将起作用,10gen实际上在他们的锁定谈判中提供了这个选项。
但是,我可能会隔离每个系列。大多数数据库似乎有2-5个高活动集合。为简单起见,最好将低活动集合保存在一个数据库中,并将高活动集合放在自己的数据库中。