打破WiredTiger的Logjam(下篇):无等待解决方案
本文的上篇探讨了WiredTiger中WAL的原始算法,该算法用于合并写操作以达到最小化I/O的目的。它没有使用耗时的锁,而是分两个阶段使用CAS原子操作来实现。只要每个核运行的线程不太多,这个算法就可以非常好地工作。但当线程数超过该限制时...
本文的上篇探讨了WiredTiger中WAL的原始算法,该算法用于合并写操作以达到最小化I/O的目的。它没有使用耗时的锁,而是分两个阶段使用CAS原子操作来实现。只要每个核运行的线程不太多,这个算法就可以非常好地工作。但当线程数超过该限制时...
你无法优化代码;优化是针对特定的条件来实现的。当条件改变时,你的优化反而可能会变为瓶颈。这时仔细审查你对这些条件的假设,其中也许就蕴藏着解决方案的关键。 WiredTiger的WAL(write-ahead log)正说明了这一原则。它是高...
本文将针对MongoDB数据库,对这些问题进行更加深入的探讨。事务和复制对于很多数据库来说是共性,但每一种数据库在这两个问题的细节之处都会有各自的考量,带来了各自的特性;围绕着对共性和特性的讨论,我们将得以还原设计的权衡与思量。
最近接到多个MongoDB内存方面的线上case及社区问题咨询,主要集中在: 为什么我的 MongoDB 使用了 XX GB 内存? 一个机器上部署多个 Mongod 实例/进程,WiredTiger cache 应该如何配置? Mongo...
多行事务 Mongodb4.0引入了多文档事务的特性,我们来看,4.0中是如何进行一个多文档事务的(js的mongoshell代码)。 mongo进行一个多文档事务,必须和一个session对象绑定。通过 startTransaction/...
MongoDB 4.0 引入的事务功能,支持多文档ACID特性,例如使用 mongo shell 进行事务操作 > s = db.getMongo().startSession() session { "id" : UUID(...
前段时间笔者遇到一个MongoBD Plan Cache的bug,于是深究了下MongoDB优化器相关源码。在这里分享给大家,一方面让大家知道MongoDB优化器工作原理,一方面就是避免踩坑。 首先帖一下笔者反馈给官方的bug地址:http...
MongoDB 因其灵活的文档模型、可扩展分布式设计广受开发者喜爱,在此基础上,MongoDB 4.0 推出了更强大的功能支持,目前4.0第一个RC版本已经发布,本文将介绍 MongoDB 4.0 核心的一些新特性。 多文档事务(Multi...
本文基于MongoDB 3.6,对于Mongodb上层事务中会让人困惑的几点进行源码层面的分析 mongodb 的写操作(insert/update/delete)提供的“单行一致性”的具体含义,如何做到的? 为何db.coll.count...
There is a great new feature in the release note of MongoDB 3.5.12. > Faster In-place Updates in WiredTiger > >...