1
1
这取决于以下因素的组合:
wiredtiger需要先将文档加载到其缓存中,然后才能对其进行操作或将其作为查询答复返回。这意味着执行集合扫描将用collscan集合替换缓存的内容。 如果collscaned集合不构成典型的工作集,那么当需要集群执行工作时,它将需要再次从磁盘重新加载工作集。这可能会在缓存重新填充时显示为慢速查询,具体取决于磁盘满足请求的速度。 换言之,集合扫描与典型工作集的比较将构成工作模式的更改,因此在工作负载更改期间应该会出现一些延迟。 除此之外,wiredtiger是一个乐观的并发存储引擎,除了在全局元数据更改(drop collection、drop database等)期间,它不会真正锁定任何内容。它在发生冲突时透明地重试写操作,并且不会由于mvcc而阻塞读卡器。您所描述的工作应该受到磁盘性能的限制。 注意 :上面描述的wiredtiger中的乐观并发性仅适用于副本集的主节点。在oplog应用期间读取第二个块,因为在oplog应用期间可能会出现数据库不一致的情况。 |
2
1
什么时候读二手书是个好主意?如果您不使用分片群集,但使用的是副本集,并且可以处理陈旧的数据,则可以 read from a secondary 以下内容:
在运行分析/报表查询时,这是一个好主意,因为它们通常是资源密集型和长时间运行的,因此如果在主应用程序上运行这些查询,则会影响来自应用程序的读写。 什么时候读二手书是个坏主意?From the docs 以下内容:
从碎片群集上的辅助数据读取的问题是,当此进程正在运行或已中止时,可能会得到重复、孤立、过时或丢失的数据。 见 https://jira.mongodb.org/browse/SERVER-5931 是的。
不过,看来这个问题已经解决了
如果您使用的是MongoDB
什么时候在二级数据库上建立索引是个好主意?您还可以考虑创建索引,以加快对单个辅助对象的查询,不应允许该辅助对象通过以下方式成为主对象:
|
Hayato · 如何检查我是如何安装MongoDB的 2 年前 |
Valeri · 如何仅获取布尔值数组中没有“false”的文档? 2 年前 |
Agrim Singh · 用户数据。名称未显示用户名 2 年前 |
danilonet · MongoDb。NET-ObjectId序列化 2 年前 |
Windy · MongoDB-查询计算和分组多个项目 2 年前 |
Mike Kharkov · 无法从数据库中检索多个值 2 年前 |