参考 > MongoDB CRUD操作 > MongoDB CRUD概念 > 查询优化 > 写操作性能
集合上的每个索引都会增加写入操作的性能。
对于集合上的每个操作insert
或delete
写入操作,MongoDB将从目标集合中的每个索引中插入或删除相应的文档密钥。根据
update
更新影响的键,操作可能导致对集合上索引子集的更新。
通常,索引为读取操作提供的性能提升值得进行插入惩罚。但是,为了在可能的情况下优化写入性能,在创建新索引并评估现有索引时要小心,以确保您的查询实际使用这些索引。
存储系统的功能为MongoDB的写操作性能创建了一些重要的物理限制。与驱动器的存储系统相关的许多独特因素都会影响写入性能,包括随机访问模式,磁盘缓存,磁盘预读和RAID配置。
对于随机工作负载,固态驱动器(SSD)的性能可比旋转硬盘(HDD)高100倍或更多。
看到
生产说明中有关其他硬件和配置选项的建议。
为了在崩溃时提供持久性,MongoDB使用预写日志记录到磁盘日志上。MongoDB首先将内存更改写入磁盘日志文件。如果在将更改提交到数据文件之前,MongoDB应该终止或遇到错误,则MongoDB可以使用日志文件将写操作应用于数据文件。
虽然日志提供的持久性保证通常会超过其他写入操作的性能成本,但请考虑以下日志和性能之间的交互:
j option
mongod
commitIntervalMs
运行时选项进行配置
。减少日记提交之间的时间间隔将增加写入操作的数量,这可能会限制MongoDB的写入操作能力。增加日志提交之间的时间量可能会减少写操作的总数,但也会增加在失败的情况下日志不会记录写操作的机会。