现在的位置: 首页 > 数据库 > 正文

怎样压缩 MongoDB 的数据文件

2020年07月01日 数据库 ⁄ 共 1334字 ⁄ 字号 评论关闭

  MongoDB采用了磁盘空间预分配的机制,为了避免磁盘碎片以及使用mmap后造成的近一步的内存碎片,但是随着数据的增删除改操作,数据文件不可避免的会产生空洞,造成磁盘空间和内存的浪费。下面学步园小编来讲解下怎样压缩MongoDB的数据文件?

  怎样压缩MongoDB的数据文件

  1.通过repairDatabase整理数据文件

  repairDatabase是MongoDB内置的一个db上的方法,调用这个方法,MongoDB会扫描db中的所有数据,并将通过重新插入来重新整理数据集合。

  这种方法的代价是对这个db的读写操作会变得非常之慢,甚至会出现写操作丢失的情况。所以这个时候最好直接停掉客户端的写操作。

  可以创建bar.js文件,写入如下代码:

  //Getathecurrentcollectionsize.

  varstorage=db.foo.storageSize();

  vartotal=db.foo.totalSize();

  print('StorageSize:'+tojson(storage));

  print('TotalSize:'+tojson(total));

  print('-----------------------');

  print('Runningdb.repairDatabase()');

  print('-----------------------');

  //Runrepair

  db.repairDatabase()

  //Getnewcollectionsizes.

  varstorage_a=db.foo.storageSize();

  vartotal_a=db.foo.totalSize();

  print('StorageSize:'+tojson(storage_a));

  print('TotalSize:'+tojson(total_a));

  然后运行:

  $mongofoobar.js

  运行结果:

  MongoDBshellversion:1.6.4

  connectingto:foo

  StorageSize:51351

  TotalSize:79152

  -----------------------

  Runningdb.repairDatabase()

  -----------------------

  StorageSize:40960

  TotalSize:65153

  怎样压缩MongoDB的数据文件

  2.如果应用可以接受,可以考虑使用cappedcollection

  cappedcollection是MongoDB中的一种特殊collection,它的大小可以限定,数据在这个限定大小内循环写入,在数据集合达到上限后,新数据会覆盖老的数据。这样磁盘上的空洞在一段时间后会自动消除。

  事实上使用replication相关的功能也可以实现以上说的数据压缩,具体过程比较麻烦,还会涉及到客户端的切换等操作。

  以上就是关于“怎样压缩MongoDB的数据文件”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.