mongodb存储引擎调研
MongoDB4.0版本,有3种存储引擎
1.WiredTiger存储引擎(默认)
2.内存存储引擎
3.MMAPv1存储引擎 (MongoDB 4.0开始弃用)
MongoDB4.2版本,有2种存储引擎,从4.2版本移除MMAPv1存储引擎
1.WiredTiger存储引擎(默认)
2.内存存储引擎
目前最新版本是4.4,2020年7月份发布的
目前开发环境用的4.0版本,不影响使用,是否可以升级到4.4版本,这个只是做个建议,不做强制要求。
基于WiredTiger存储引擎、内存存储引擎怎么做选择?
基于我们的数据量,放内存是不可能的,所以我们使用默认的存储引擎WiredTiger
WiredTiger存储引擎的相关知识点
1.Document Level Concurrency 文档级并发
WiredTiger使用文档级并发控制进行写操作。因此,多个客户端可以修改不同的文档集合的在同一时间。
2.Snapshots and Checkpoints 快照与检查点
3.Journal日志
MongoDB2.0版本后默认开启了Journal日志功能,默认使用snappy对Journal日志进行压缩
4.压缩
WiredTiger存储引擎,MongoDB支持所有集合和索引的压缩
WiredTiger uses block compression with the snappy compression library for all collections
集合默认采用block compression(块压缩)
对于集合还可以使用,下面另外2种压缩方式
zlib
zstd(从MongoDB 4.2开始可用)
prefix compression for all indexes.
索引默认使用前缀压缩
对于大多数工作负载,默认压缩设置可以平衡存储效率和处理要求。
默认情况下,WiredTiger日志也被压缩。有关日记压缩的信息
设置WiredTiger缓存大小
在下面2种取最大值
50%(RAM-1 GB),或
256 MB。
例如,在总共有4GB RAM的系统上,WiredTiger缓存将使用1.5GB RAM(0.5 * (4 GB - 1 GB) = 1.5 GB)。相反,
一个拥有1.25 GB RAM的系统将为WiredTiger缓存分配256 MB,因为这是总RAM的一半以上减去1 GB(0.5 * (1.25 GB - 1 GB) = 128 MB < 256 MB)。
默认情况下,WiredTiger对所有集合使用Snappy块压缩,对所有索引使用前缀压缩。压缩默认值是可以在全局级别配置的,也可以在集和和索引创建期间基于每个集合和每个索引进行设置。
要调整WiredTiger内部缓存的大小,请参阅 storage.wiredTiger.engineConfig.cacheSizeGB和 --wiredTigerCacheSizeGB。避免将WiredTiger内部缓存的大小增加到其默认值以上