更新时间:2022-06-13 GMT+08:00
写入/更新命令
- 用户做了大量写入/更新操作后,实际数据量可能没有多大变化,但磁盘空间使用量增加了。是因为无论是写入、更新还是删除,以及索引插入和删除等操作,在后台实际上都会转成写入。因为底层的存储引擎(WiredTiger和RocksDB)采用都是appendOnly机制。只有当存储引擎内部数据状态满足一定条件后,会触发内部的compaction操作,进行数据压缩,进而释放磁盘空间。
- 写入/更新操作会涉及到备节点同步,可以指定writeConcern级别。详情请参见Write Concern。
注意事项
- update和upsert:upsert内部会先做一次查询,如果查询不存在则插入,否则执行update。如果业务上场景可以进行相关记录,则避免使用upsert命令,建议直接使用update或insert。
- update也需要匹配索引。
- 避免COLLSCAN全表扫描。
- 查询条件和索引字段匹配有顺序性。
- insert/update命令中涉及的文档,最大不能超过16MB。
父主题: 基础命令规范