mongodb还有分表的必要吗?

mongodb自带了autosharding,那么还有必要分表吗,加入一张表过亿级别?

阅读 11.8k
评论
    5 个回答

    嗯是我踩的,因为这样的答案是在误导读者。
    无论哪种数据库建立索引的时候开销都是巨大的,因为这代表着要遍历整个表里的数据,怎么可能压力不大?所以才会有{background: true}选项可以适当缓解这种情况。当在一个压力实在太大的集群中创建索引,我们更建议使用“滚动”创建索引的方式,将从结点逐一摘下来创建索引再放上线,以避免影响线上系统运行。
    至于锁的问题,3.0开始WT引擎支持的就是文档锁(行锁)。
    查询索引的时候开销巨大,多半是你的索引建立不当,可以举出具体的例子来讨论。
    数据过亿的时候坑多也请举出具体例子讨论。

      Mongodb支持自动分片和划分架构,可以利用它构建一个水平扩展的数据库集群系统,将数据库分表存储在各个sharding节点上。

      请看 mongodb 分片代替数据库分表 [1]: https://yq.aliyun.com/article...

        • 108

        可以按月分表 名字_03 名字_04 名字不变 程序中根据时间戳动态变更要查询的表名

          mongodb建索引就是为了读取速度快才这么干的,个人认为数据量太大了索性就把不必要的索引去掉,考虑下Elasticsearch。

            我个人觉得还是有必要的,MongoDB有锁库(低版本)和锁表(中版本)的问题,即使有存储文件的分片,但是在建立索引、以及在查索引的时候开销还是巨大!!!!数据过亿的时候还是坑多!

              撰写回答

              登录后参与交流、获取后续更新提醒

              相似问题
              MongoDB 技术问答
              合作问答

              MongoDB 官方中文社区 和 SegmentFault 联合推出的 MongoDB 技术交流平台。 这是一个以社区力量为主,但...

              推荐文章