Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

固定大小集合

在此页面上

  • 限制
  • 命令语法
  • 用例
  • 开始体验
  • 行为
  • Oplog 集合
  • _id 索引
  • 更新
  • 查询效率
  • 可追加游标
  • 多个并发写入
  • 读关注快照
  • 了解详情

固定大小集合是大小固定的集合,根据插入顺序插入和检索文档。固定大小集合的工作方式与循环缓冲区类似:一旦一个集合填满了分配的空间,它就会通过覆盖集合中最旧的文档来为新文档腾出空间。

以下示例创建了一个名为log的固定大小集合,其最大大小为 100,000 字节。

db.createCollection( "log", { capped: true, size: 100000 } )

有关创建固定大小集合的更多信息,请参阅 createCollection()create

通常情况下,TTL(存活时间)索引比固定大小集合提供更好的性能和更大的灵活性。TTL 索引会过期,并根据日期类型字段的值和索引的 TTL 值从正常集合中删除数据。

固定大小集合会序列化写入操作,因此其并发插入、更新和删除性能比非固定大小集合差。在创建固定大小集合之前,请考虑是否可以改用 TTL 索引。

固定大小集合最常见的使用场景是存储日志信息。当固定大小集合达到其最大大小时,旧的日志条目将自动被新的条目覆盖。

要创建和查询固定大小集合,请参阅以下页面:

请考虑固定大小集合的这些行为细节。

副本集中存储操作日志的 oplog.rs 集合使用固定大小集合。

与其他固定大小集合不同,oplog 可能会增长到超过配置的大小限制,从而避免删除 majority commit point

注意

MongoDB 会将 oplog 的固定大小四舍五入为最接近的 256 字节的整数倍。

默认情况下,固定大小集合包含 _id 字段以及针对 _id 字段的索引。

避免更新固定大小集合中的数据。由于固定大小集合的大小是固定的,因此更新可能会导致数据超出集合的分配空间,这可能会导致意外行为。

使用自然排序,从集合中高效检索最近插入的元素。这类似于在日志文件中使用 tail 命令。

可以将可追加游标与固定大小集合一起使用。与 UNIX tail -f 命令类似,可追加游标“跟踪”固定大小集合的末尾。当新文档插入到固定大小集合中时,可以使用可追加游标继续检索文档。

有关创建可追加游标的信息,请参阅可追加游标。

如果有并发写入者同时写入固定大小集合,MongoDB 不会保证按插入顺序返回文档。

从MongoDB8.0 开始,您可以在固定 大小"snapshot" 集合上使用读关注(read concern) 。

后退

按需物化视图