单表多大做分片并没有硬性限制。理论上讲,你的硬件越好,可以存储的数据量就越大,所以标准答案是:看你的硬件决定。标准就是,内存能够容纳“热数据”。热数据指的是你需要经常用到的数据和索引,最坏的情况,也应该容纳经常使用的索引。内存容量不仅会影响到读,还会影响到写。因为写的时候也会需要修改索引,如果此时索引不在内存中,同样会造成比较严重的影响。
但是这也并不代表数据可以无限大下去。在实际使用中我们也发现,数据量大之后有些运维动作会很不方便,最典型的有:
- 重新同步从节点
- 从备份恢复数据
所以为了日常运维方便,建议数据量维持在一定量之内。这个量我们的经验值是每个节点2TB。注意是节点,不是表。再注意这里说的2TB是数据容量,不是存储容量。由于压缩的存在,存储容量会比数据容量小得多。数据容量可以在各个库上执行db.stats().dataSize获得。
dami 发表新评论
非常感谢,懂了