美文网首页
Mongodb存储引擎

Mongodb存储引擎

作者: 蕴重Liu | 来源:发表于2019-08-21 11:13 被阅读0次

    插件式存储引擎API

    image.png
    image.png

    插件式存储引擎API的引入为处理更多不同类型的业务提供了无限可能,内存存储引擎、事务存储引擎甚至Hadoop在未来都有可能接入进来。

    MMAP存储引擎

    缺陷:耗费磁盘空间和内存空间且难以清理,库级别锁,存储引擎消耗内存

    WiredTiger存储引擎

    • 文档级别并发控制
      通过MVCC实现文档级别的并发控制,即文档级别锁;
      提升数据库读写性能的同时,大大提高了系统的并发处理能力;
    • 磁盘数据压缩
      支持对所有集合和索引进行Block压缩和前缀压缩(如果数据库启用了journal,journal文件一样会压缩),已支持的压缩选项包括:不压缩、Snappy压缩和Zlib压缩;
      默认:Snappy压缩;
      Snappy压缩速度快,压缩率OK,而Zlib压缩率高,CPU消耗多且速度稍慢;
      关于journal查看官网
    • 数据存储
      旧版本Mongo在数据库级别分配文件,数据库中的所有集合和索引都混合存储在数据库文件中,导致占用的磁盘空间也很难及时自动回收;
      在集合和索引级别分配文件,数据库中的所有集合和索引均存储在单独的文件中,集合或者索引删除后,对应的存储文件随即删除;
      由于存储方式不同,低版本的数据库无法直接升级到WiredTiger存储引擎,只能通过导出导入数据的方式来实现。

    • 可配置内存使用上限
      内存使用容量配置,storage.wiredTiger.engineConfig.cacheSizeGB和 [–wiredTigerCacheSizeGB参数,默认值为物理内存大小的一半;

    MongoDB 3.0的一些主要特性和修改

    使用createIndexes命令可以同时建立多个索引,并且只扫描一遍数据,提升了建索引的效率

    MongoDB 4.0的一些主要特性和修改

    • 内部缓存
      同时使用WiredTiger内部缓存和文件系统缓存,从MongoDB 3.4开始,是两者中的较大者:50%(内存大小 – 1 GB)或 256 MB
    • 默认对索引前缀压缩,使用 db.collection.stats()方法并检查返回文档中的 indexSizes字段;

    常见存储问题

    相关文章

      网友评论

          本文标题:Mongodb存储引擎

          本文链接:https://www.haomeiwen.com/subject/dttbsctx.html