首页  >  问答  >  正文

mongodb还有分表的必要吗?

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

天蓬老师天蓬老师2698 天前1709

全部回复(4)我来回复

  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:28:37

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

    回复
    0
  • 天蓬老师

    天蓬老师2017-05-02 09:28:37

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

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

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:28:37

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

    回复
    0
  • PHPz

    PHPz2017-05-02 09:28:37

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

    回复
    0
  • 取消回复