mongodb存储引擎
在了解了mongodb的基本使用之后,我们看一下mongodb的存储引擎。从更深层次了解mongodb的数据处理机制,也在mongodb出现数据丢失等情况时,便于对问题进行排查。 1、 存储引擎wiredTiger mongodb从3.0开始引入了可插拔存储引擎的概念。目前主要有MMAPV1、WiredTiger两种引擎可供选择。在3.2版本之前默认引擎为MMAPV1,采用linux操作系统内存映射技术,但一直饱受诟病;3.4以上版本默认存储引擎是wiredTiger,相对于MMAPV1有以下优势: a、读写操作性能更好,wiredTiger能更好的发挥多核系统的处理能力; b、MMAPV1引擎使用表级锁,当某个单表上有并发的操作,吞吐将受到限制。wiredTiger使用文档级锁,由此带来并发及吞吐量的提升; c、相比MMAPV1,wiredTIger使用了前缀压缩,更节省对内存空间的消耗; d、提供压缩算法,可大大降低对硬盘资源的消耗,节省60%以上的硬盘资源; 2、 为什么会丢失数据? wiredTiger写入模型: 注意,请求处理层跟存储引擎是不在一起的,处理层可以认为是一个"外壳",主要负责对外部请求的响应。处理层只是吧数据放到了缓存,真实数据的处理是引擎来做的。 处理层的处理:接收到外部请求,开启一个事务;将数据插入或者更新到集合,更新索引,将操作写入操作日志