心 空

  • Tools
Ricky Hao
  1. 首页
  2. MongoDB
  3. 正文

MongoDB Shard集群大批量数据导入优化

5 9 月, 2019 5411点热度 3人点赞 0条评论

0x00

起因是需要往MongoDB的Shard分片集群导入两个T(十亿文档)级别的数据。其中遇到了各种很严重的性能问题,在这里做一下记录。

0x01 索引

在导入数据时,尽量不提前建立索引,仅建立必须的shard_key。

0x02 批量写入

在进行大批量导入时,尽量使用insert_many进行批量写入。若写入顺序不重要的话,可以设置ordered=False来提高速度。

0x03 SHARD_FILTER问题

若从一个Shard集群读取数据,并且读取的规则为Secondary Preferred,在查询时会缺少SHARD_FILTER阶段。
在项目中遇到一个问题:集群中两个分片都保有同一条数据。
在这种情况下,若是没指定Primary Preferred,则可能造成一条数据返回两次的情况。而经过了SHARD_FILTER阶段,会自动过滤掉多余的数据。

0x04 其他问题

  • 假若分片不均,可以使用hashed索引作为分片索引
  • 假若导入的集合已存在使用过的索引,那么这个索引存在缓存,可能会导致分片不均。此时删除重建即可。
  • 使用insert_many批量导入完成之后,可能会存在文档数量过多的情况,这是正常的,等待数据库自动平衡去重即可。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: MongoDB
最后更新:5 9 月, 2019

Ricky

这个人很懒,什么都没留下

点赞

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

COPYRIGHT © 2025 心 空. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang