国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > MongoDB > mongodb为什么分片不均衡

mongodb为什么分片不均衡

头像

爱喝马黛茶的安东尼

2019-12-26 16:18:053482浏览 · 0收藏 · 0评论

今天接到一个用户反馈的问题,sharding集群,使用wiredtiger引擎,某个DB下集合全部用的hash分片,show dbs 发现其中一个shard里该DB的大小,跟其他的集合差别很大,其他基本在60G左右,而这个shard在200G左右?

由于这个DB下有大量的集合及索引,一眼也看不出问题,写了个脚本分析了一下,得到如下结论:

(1)somedb下所有集合都是hash分片,并且chunk的分布是比较均匀的。

(2)show dbs反应的是集合及索引对应的物理文件大小。

(3)集合的数据在各个shard上逻辑总大小是接近的,只有shard0占用的物理空间比其他大很多。

从shard0上能找到大量moveChunk 的记录,猜测应该是集合的数据在没有开启分片的情况下写到shard0了,然后开启分片后,从shard0迁移到其他shard了,跟用户确认的确有一批集合是最开始没有分片。

所以这个问题就转换成了,为什么复制集里集合的逻辑空间与物理空间不一致?即collection stat 里 size 与 storageSize 的区别。

mymongo:PRIMARY> db.coll.stats()
{
    "ns" : "test.coll",
    "size" : 30526664,
    "count" : 500808,
    "avgObjSize" : 33,
    "storageSize" : 19521536,
    "capped" : false,
    ....
}

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

(1)存储引擎存储时,需要记录一些额外的元数据信息,这会导致物理空间总和比逻辑空间略大。

(2)存储引擎可能支持数据压缩,逻辑的数据块存储到磁盘时,经过压缩可能比逻辑数据小很多了(具体要看数据的特性,极端情况下压缩后数据变大也是有可能的)。

(3)引擎对删除空间的处理,很多存储引擎在删除数据时,考虑到效率,都不会立即去挪动数据回收删除的存储空间,这样可能导致删除很多文档后,逻辑空间变小,但物理空间并没有变小。如下图所示,灰色的文档删除表示被删除。删除的空间产生很多存储碎片,这些碎片空间不会立即被回收,但有新文档写入时,可以立即被复用。

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

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

    ·对集合调用 compact 命令

python学习网,大量的免费MongoDB入门教程,欢迎在线学习!

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

兽父1到16集一口气看完| 免费观看已满十八岁电视剧在线播... | 日韩精品国产一区二区三区| 人与动物胶配方视频荷尔蒙| 揉鸡的正确手法图解| BOBO浏览器| 亲密时男人最想听女人说什么| 《漂亮的秘书HD》在线观看| 日韩电影在线观看高清版电视剧| 老师你感受到它变大了么视频 | 暖暖的幸福 电视剧| 意大利女性教育史| 人野兽马狗猪大全| 日产无码久久久久久精品红桃 | BOBO浏览器老司机模式改版特..| 《艳乳欲乱2》免费观看| 韩国男按摩师吸乳房会得乳腺癌吗 | 毛片| 黑丝美女| 天堂草原高清在线观看电视剧| 免费观看已满十八岁的电视剧大全| 欧美人与人动人物2024心理学| BGMBGMBGM毛多老太| 爷爷的鸡又黑又长下一句怎么接 | 顶到里面了~疼| 无人区免费高清版观看| 国精产品偷偷偷拍XXXX| 《蜜桃成熟时1997》主题曲歌...| 电影免费观看高清完整版在线观看| 喜爱夜蒲在线观看| 男生把困困放到女生坤坤视频高清| 坤坤寒入桃子里电视剧| 69国产精华是纯还是仿| 苍井空《办公室爱欲》| 妈妈叫我老公我叫妈妈的名字| 朋友的妈妈7中字谜| 成全在线观看免费完整版的| 耕耘小侄女小说全文免费阅读 | 《喂奶人妻厨房HD》| 真人姓交| 一枪战三母2雪姨是哪个角