mongodb自带了autosharding,那么还有必要分表吗,加入一张表过亿级别?
Mongodb支持自动分片和划分架构,可以利用它构建一个水平扩展的数据库集群系统,将数据库分表存储在各个sharding节点上。
请看 mongodb 分片代替数据库分表 [1]: https://yq.aliyun.com/article...
我个人觉得还是有必要的,MongoDB有锁库(低版本)和锁表(中版本)的问题,即使有存储文件的分片,但是在建立索引、以及在查索引的时候开销还是巨大!!!!数据过亿的时候还是坑多!
2 回答1.2k 阅读
1 回答915 阅读✓ 已解决
1 回答882 阅读✓ 已解决
734 阅读
700 阅读
634 阅读
531 阅读
嗯是我踩的,因为这样的答案是在误导读者。
无论哪种数据库建立索引的时候开销都是巨大的,因为这代表着要遍历整个表里的数据,怎么可能压力不大?所以才会有
{background: true}
选项可以适当缓解这种情况。当在一个压力实在太大的集群中创建索引,我们更建议使用“滚动”创建索引的方式,将从结点逐一摘下来创建索引再放上线,以避免影响线上系统运行。至于锁的问题,3.0开始WT引擎支持的就是文档锁(行锁)。
查询索引的时候开销巨大,多半是你的索引建立不当,可以举出具体的例子来讨论。
数据过亿的时候坑多也请举出具体例子讨论。