文档菜单
文档首页
/
MongoDB 手册
/ /

固定集合

本页内容

  • 限制
  • 命令语法
  • 用例
  • 入门
  • 行为
  • 操作日志集合
  • _id 索引
  • 更新
  • 查询效率
  • 可续行光标
  • 多并发写入
  • 读取关注快照
  • 了解更多

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

以下示例创建了一个最大大小为100,000字节的受限集合,名为log

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

有关创建受限集合的更多信息,请参阅createCollection()create

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

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

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

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

考虑以下固定大小集合的行为细节。

存储副本集操作日志的 oplog.rs 使用了限制大小的集合。

与其他限制大小的集合不同,oplog 可以超过其配置的大小限制,以避免删除 大多数提交点

注意

MongoDB 将 oplog 的限制大小向上舍入到最接近的 256 的整数倍,单位为字节。

限制大小的集合默认有一个 _id 字段和一个基于 _id 字段的索引。

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

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

您可以使用可变光标与上限集合一起使用。类似于Unix的tail -f命令,可变光标“跟踪”上限集合的末尾。当新文档插入到上限集合中时,您可以使用可变光标继续检索文档。

有关创建可变光标的信息,请参阅可变光标。

如果存在对受限集合的并发写入,MongoDB 不保证返回的文档顺序与插入顺序一致。

从 MongoDB 8.0 版本开始,您可以在 受限 集合上使用 "snapshot" 读取关注。

返回

按需物化视图