“文档” 菜单
文档首页
/
MongoDB Manual
/ / /

写入操作性能

在此页面上

  • 索引
  • 存储性能

在集合上每个索引都会增加一定量的写入操作性能开销。

对于集合上的每个 insertdelete写入操作,MongoDB 会从目标集合的每个索引中插入或删除相应的文档键。 update操作可能会导致集合上索引子集的更新,具体取决于受更新影响的键。

注意

只有索引中包含写入操作所涉及的文档时,MongoDB 才会更新稀疏部分索引。

一般来说,索引为读操作提供的性能提升值得插入损失。但是,为了尽可能优化写性能,在创建新索引并评估现有索引时要小心,确保查询实际使用这些索引。

关于索引和查询,请参阅查询优化。有关索引的更多信息,请参阅索引索引策略

存储系统的能力对 MongoDB 写入操作的性能造成了一些重要的物理限制。与驱动器存储系统相关的许多独特因素都会影响写入性能,包括随机存取模式、磁盘缓存、磁盘预读和 RAID 配置。

对于随机工作负载,固态硬盘 (SSD) 的性能比旋转硬盘 (HDD) 高出至少 100 倍。

提示

请参阅:

有关其他硬件和配置选项建议的生产说明

为了在发生崩溃时提供耐久性,MongoDB 会提前将日志记录写入磁盘上的日志中。MongoDB 会先将内存中的更改写入磁盘上的日志文件。如果 MongoDB 在将更改提交到数据文件之前应终止或遇到错误,则 MongoDB 可以使用日志文件将写入操作应用于数据文件。

虽然日志提供的持久性保证通常超过额外写入操作的性能成本,但请注意日志与性能之间的以下相互作用:

  • 如果日志和数据文件驻留在同一区块设备上,它们则可能必须争夺有限数量的可用 I/O 资源。将日志移至单独的设备可能会增大用于写入操作的容量。

  • 如果应用程序指定包含 j option写关注mongod 将缩短日志写入之间的持续时间,这可能会增加整体写入负载。

  • 可以使用 commitIntervalMs 运行时选项配置日志写入之间的持续时间。缩短日志提交之间的持续时间会增加写操作的数量,这会限制 MongoDB 的写操作容量。增加日志提交之间的时间量可能会减少写操作的总数,但也会增加在发生故障时日志不记录写操作的概率。

有关日志的更多信息,请参阅日志

← 优化查询性能

在此页面上