写操作性能
最后更新于
在本页面
集合上的每个索引都会给写操作的性能增加一些负担。
对于集合上的每个操作或写入操作,MongoDB从目标集合的每个索引中插入或删除相应的文档键。根据受影响的键,更新操作可能导致对集合上的索引子集进行更新。
[success] 注意
如果写操作中涉及的文档包含在索引中,则MongoDB仅更新索引或 索引。
一般来说,索引为读操作提供的性能收益抵得上插入损失。但是,为了尽可能优化写性能,在创建新索引和评估现有索引时要小心,以确保您的查询实际使用这些索引。
有关索引和查询,请参见。有关索引的更多信息,请参见和 。
存储系统的功能为MongoDB的写操作性能创建了一些重要的物理限制。与驱动器的存储系统相关的许多独特因素都会影响写入性能,包括随机访问模式,磁盘缓存,磁盘预读和RAID配置。
对于随机工作负载,固态驱动器(SSD)的性能可比旋转硬盘(HDD)高100倍或更多。
请看:
虽然日志提供的持久性保证通常超过了额外写操作的性能成本,但考虑一下日志和性能之间的以下交互:
如果日志和数据文件位于同一块设备上,则数据文件和日志可能必须竞争有限数量的可用I / O资源。将日志移动到单独的设备可能会增加写操作的容量。
译者:杨帅
校对:杨帅
中有关其他硬件和配置选项的建议。
为了在崩溃时提供持久性,MongoDB使用预_写日志记录_到磁盘。MongoDB首先将内存中的更改写入磁盘上的日志文件。如果MongoDB在对数据文件进行更改之前终止或遇到错误,MongoDB可以使用日志文件对数据文件应用写操作。
如果应用程序指定了包括J选项的,mongod将减少日志写之间的持续时间,这会增加总体写负载。
日志写入之间的持续时间可以使用运行时选项进行配置 。减少日志提交之间的时间间隔将增加写入操作的数量,这可能会限制MongoDB的写入操作能力。增加日志提交之间的时间量可能会减少写操作的总数,但也会增加在发生故障的情况下日志不会记录写操作的机会。
有关日志记录的其他信息,请参见。