0

我使用 MongoDB 作为非规范化存储,该状态每 15 分钟完全重建一次。重建过程需要很多时间和资源。有没有办法组织表“热交换”过程,以避免数据库锁定和重建过程中的性能下降。假设我正在另一台服务器上构建新版本的数据库,制作所有需要的索引等,然后在主服务器上复制数据库文件并“交换”表,以便用户在交换后立即获得刷新数据?

4

1 回答 1

2

MongoDB 使用预先分配的数据文件,因此如果您经常删除和重建数据库,您可能会搅动磁盘。数据文件是使用内存映射 I/O 打开的,并且没有提供“热交换”或重命名数据库。

已删除集合中的空间可以重新使用,因此更好的方法可能是根据 15 分钟的时间间隔生成临时集合名称,以便您的程序可以预测地“交换”到下一个集合,并且可以删除旧集合。

如果您使用的是 MongoDB 2.2 或更新版本,您还有一些额外的选择:

于 2012-11-02T11:47:11.740 回答