写操作性能

在本页面

集合上的每个索引都会给写操作的性能增加一些负担。

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

[success] 注意

如果写操作中涉及的文档包含在索引中,则MongoDB仅更新稀疏索引或 部分索引。

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

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

储存性能

硬件

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

对于随机工作负载,固态驱动器(SSD)的性能可比旋转硬盘(HDD)高100倍或更多。

​ 请看:

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

日记

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

虽然日志提供的持久性保证通常超过了额外写操作的性能成本,但考虑一下日志和性能之间的以下交互:

  • 如果日志和数据文件位于同一块设备上,则数据文件和日志可能必须竞争有限数量的可用I / O资源。将日志移动到单独的设备可能会增加写操作的容量。
  • 如果应用程序指定了包括J选项的写关注点,mongod将减少日志写之间的持续时间,这会增加总体写负载。
  • 日志写入之间的持续时间可以使用commitIntervalMs运行时选项进行配置 。减少日志提交之间的时间间隔将增加写入操作的数量,这可能会限制MongoDB的写入操作能力。增加日志提交之间的时间量可能会减少写操作的总数,但也会增加在发生故障的情况下日志不会记录写操作的机会。

有关日志记录的其他信息,请参见日志记录

译者:杨帅

校对:杨帅

参见

原文 - Write Operation Performance

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2020-12-18 11:34:57

results matching ""

    No results matching ""