12.MongoDB之固定集合(Capped Collections)

简介。MongoDB固定集合(Capped Collections)是性能出色且有着固定大小的集合。我们可以将其想成一个环形队列,当集合空间用完后,在插入的元素就会覆盖最初是的头部元素。另外这里说的大小固定其实有有两个含义:① 存储空间大小有上限 ②文档数有上限。实际使用时触发其中任何一个上限都会引发前面说的覆盖。

适应范围。固定集合很像环形队列,如果空间不足就会覆盖最早的文档。由此可见固定集合适应于任何想要自动淘汰过期属性的场景。例如:日志文件、最近通话记录、最近联系人、最近聊天记录等。

固定集合的优点。

(1)写入速度提升。固定集合中的数据被顺序的写入磁盘上的固定空间。所以,不会因为其他集合的一些随机性的写操作而"中断",因而其写入速度更快(不建索引,性能更好)。

(2)固定集合会自动覆盖掉最老的文档,因而不需要在额外的工作进行旧文档删除。设置Job进行旧文档的定时删除容易形成性能的压力毛刺。

1、创建固定集合

对于固定集合必须要显示的创建。

①如下创建一个大小限制为1024字节的固定集合 coll_capped 。

db.createCollection("coll_capped",{capped:true,size:1024});

②另外,创建时还可以指定集合中的文档数量。如下指定下下限制为1024字节,文档数限制为100.

db.createCollection("coll_capped2",{capped:true,size:1024,max:100});

③另外还有一个途径,即将普通集合转换为固定集合,命令如下:

db.runCommand({"convertToCapped":"col1","size":1024})

2、查看固定集合

(1)判断某集合是否为固定集合

mongos> db.coll_capped2.isCapped()
true

(2)从固定集合中获取有关固定集合的属性

db.coll_capped2.stats()

3、固定集合注意点

(1)创建固定集合时如果要指定文档数量限制(max)是,也必须指定固定集合的消息限制(size);

(2)普通集合可以使用convertToCapped转换为固定集合,但是固定集合不能转换为普通集合;

且 转换后既有索引会丢失,需要手动创建;而且转换命令没有限制文档数量的参数;

(3)固定集合可以插入及更新,但是注意更新不能超过collection的大小,否则更新失败;

(4)固定集合可以drop删除集合中的所有行,但是不能执行针对其中数据的删除;

(5)不可以对固定集合进行分别片;

(6)对集合估算size时,不要依据storageSize,而是依据集合的size;stageSize是WT存储引擎采用高压缩算法压缩后的。

猜你喜欢

转载自blog.csdn.net/mijichui2153/article/details/118963376