mongodb还有分表的必要吗?

ozil
  • 18

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

回复
阅读 14.3k
5 个回答

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

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏