我目前正在判断MongoDb的高写应用程序...

目前MongoDb使用单线程进行写操作,并且在写操作时也使用全局锁...有可能利用多CPU服务器上的多CPU来获得更好的写性能吗?您的全局写锁解决方案是什么?

推荐答案

所以现在,最简单的解决办法就是切分.

是的,通常分片是跨服务器进行的.然而,在一个盒子上切分是完全可能的.您只需在不同的端口上启动碎片,并为它们提供不同的文件夹.一个盒子上2块碎片中的Here's a sample configuration块.

MongoDB团队认识到这是一种低于标准的做法,我从与他们的交谈中了解到,他们正在寻找更好的方法来做到这一点.

显然,一旦一个盒子上有多个碎片,并且增加了写入线程,就必须警惕磁盘IO.根据我的经验,我能够用一个写线程使磁盘饱和.如果插入/更新相对简单,您可能会发现额外的写线程没有任何作用.( map 缩小在这里是个例外,切分肯定会有帮助)

Mongodb相关问答推荐

如何在MongoDB中查找和过滤嵌套数组

使用mongo'db.Decode(&dto)映射一个嵌套的 struct

Mongodb Timeseries / Golang - ['timestamp' 必须存在并包含有效的 BSON UTC 日期时间值]

Mongodb聚合查找连接两个对象字段的集合数组匹配对象索引字段的总和

MongoDB 更新:如果新值不同,则将旧字段值推送到另一个数组字段

MongoDB - 文档中多个数组大小的总和

MongoDB 到 Snowflake 连续加载

无法让 Mongoose.js 子文档数组填充

为什么使用整数作为 pymongo 的键不起作用?

MongoDB - 清除嵌套数组中的元素

如何在 mongo JavaScript shell 中中止查询

不能在模块外使用 import 语句

如何将 mongoDB 数据导出为 CSV 格式?

嵌套数组内的Mongodb增量值

Mongoose.js:嵌套属性的原子更新?

Mongo Schema-less集合和 C#

没有参考选项的mongoose填充字段

使用 mongodb 在数组中查找子文档

从 mongo 结果中删除 _id

在 Ubuntu 13.10 (saucy) 中安装 Mongodb PHP 扩展的最简单方法?