zoukankan      html  css  js  c++  java
  • mongo 的逻辑存储和物理存储

    逻辑存储空间与物理存储空间有差距的主要原因

    1. 存储引擎存储时,需要记录一些额外的元数据信息,这会导致物理空间总和比逻辑空间略大
    2. 存储引擎可能支持数据压缩,逻辑的数据块存储到磁盘时,经过压缩可能比逻辑数据小很多了(具体要看数据的特性,极端情况下压缩后数据变大也是有可能的)
    3. 引擎对删除空间的处理,很多存储引擎在删除数据时,考虑到效率,都不会立即去挪动数据回收删除的存储空间,这样可能导致删除很多文档后,逻辑空间变小,但物理空间并没有变小。如下图所示,灰色的文档删除表示被删除。删除的空间产生很多存储碎片,这些碎片空间不会立即被回收,但有新文档写入时,可以立即被复用。

    _2017_08_02_8_03_44

    而上述case里,集合数据先分到一个shard,然后启用分片后,迁移一部分到其他shard,就是一个典型的产生大量存储碎片的例子。存储碎片对服务通常影响不大,但如果因为空间不够用了需要回收,如何去强制的回收这些碎片空间?

    • 数据清理掉重新加入复制集同步数据,或者直接执行resync命令 (确保有还有其他的数据备份)
    • 对集合调用 compact 命令

    转自:http://www.mongoing.com/archives/4635

    在对mongo的collection做删除操作,产生空洞文件,58的分析及实例如下链接:

    http://www.infoq.com/cn/articles/app-practice-of-mongodb-in-58-ten-billion-scale-data

    (备注:其实58的对mongo删除数据的实战中,降级节点——》删除数据文件——》同步数据等一系列的操作,我司早在4年前也这么使用过,效果还不错。)

  • 相关阅读:
    mysql日期加减
    cron 配置计划任务的书写格式(quartz 时间配置)
    空值排序问题
    update 表名 set 字段=值,数据更新
    insert into 数据插入
    SQL里面的char类型
    SQL使用代码创建数据完整性,约束
    SQL制表
    sql创建数据库
    验证码
  • 原文地址:https://www.cnblogs.com/unqiang/p/7705553.html
Copyright © 2011-2022 走看看