一 简介 两种引擎方式的对比
二 对比与说明 1 版本支持 MMAP引擎 3.2版本之前,默认引擎 WT 引擎 3.2版本之后,默认引擎 2 并发性能(核心) MMAP引擎 globallock->dblock->collectionlock 相当于mysql的myisam引擎 WT 引擎 globallock->dblock->collectionlock->documentlock 相当于mysql的innodb引擎 从3.2.x开始,WiredTiger成为默认的存储引擎。最为MongoDB目前最流行的存储引擎,WiredTiger与原先的MMAPV1相比有以下优势: 3 压缩加密 MMAP引擎 要求数据在内存和在磁盘的形式一致(map磁盘内存映射)。因此,它并不支持压缩和加密 WT 引擎 支持压缩和加密,占用的物理磁盘空间更少4 索引压缩 WT 引擎 使用前缀压缩——相同的前缀只存一次 .占用的物理内存空间更少5 内存控制 WT 引擎拥有了控制使用内存的限制参数,和innodb一样三 WT引擎参数优化
1 wiredTigerCacheSizeGB=48 含义 1 cacheSizeGB 指的就是Cache size,包括数据和索引。Mongod本身使用内存如连接池堆栈以及sorting buffer等都是额外的,不会被统计到这个数字里面。 2 MongoDB在做诸如聚合、排序、连接管理等操作时需要额外的内存。因此,必须确保有足够的内存可供使用,否则,MongoDB进程有被OOM killer杀死的风险。 和mysql的innodb_buffer_pool很像呢,数据索引放在内存里,排序需要额外的内存 2 推荐配置 服务器内存X75% 3 查看状态命令 db.serverStatus().wiredTiger.cache 2 wiredTigerDirectoryForIndexes=true 1 含义 Index文件和数据文件分离,索引一个目录,数据一个目录。 去具体的collection目录下可以发现 collection index 两个目录3 wiredTigerDirectoryForIndexes=true 1 含义 是否开启索引的前缀压缩,这里影响所有DB的索引。它会一次存储所有前缀一样的索引, 减少内存、磁盘IO的消耗,默认开启。4 wiredTigerCollectionBlockCompressor=snappy 1 含义 采用何种压缩方式 默认snappy 不建议采用zlib方式,会加重CPU的负担四 引擎总结
WT引擎的优化其实主要集中在内存控制 索引压缩两方面,非常好记
五 Mongo对比mysql优势点
1 mongoDB对于开发者十分友好,拿到的数据都是json格式,同时开发者维护数据库也很方便。
2 mongodb 适用于存储数据表结构复杂并且经常被修改,
3 mongoDB官方自带分布式架构,可以针对海量的数据进行无限扩张,用来提升性能