6

MongoDB 2.2 每个数据库都有一个写锁,而不是以前版本的服务器上的全局写锁。那么,如果我将每个集合存储在一个单独的数据库中以有效地为每个集合拥有一个写锁,那可以吗?(这将使它看起来像 MyISAM 的表级锁定)。这种方法有问题吗?

4

2 回答 2

6

锁定有一个关键限制,那就是local数据库。该数据库包括一个oplog用于复制的集合。

如果您在生产环境中运行,则应该使用 Replica Sets 运行。如果您使用副本集运行,则需要注意该数据库上的写锁定效果。

如果它们都阻塞等待oplog.

在大步重写之前,请确保oplog不会引起问题。

另外,请注意 MongoDB 实现了 DB 级别的安全性。如果您使用任何安全功能,您现在正在创建更多的数据库来保护。

于 2012-07-26T16:14:54.723 回答
2

是的,这会起作用,10gen 实际上在他们关于锁定的讨论中提供了这个选项。

不过,我可能会隔离每个集合。大多数数据库似乎有 2-5 个高活动集合。为了简单起见,最好将低活动集合放在一个数据库中,并将高活动集合放在他们自己的数据库中。

于 2012-07-26T15:55:48.060 回答