17.Mongodb预分片(pre-split)/autosplit(chunk/jumbochunk相关)

479 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

可以参考分片集群的介绍  这里

关于balancer的介绍(split对性能影响的测试)  这里

零、使用经验

问题一、预分片的话chunk数如何确定?

目前有40亿条数据,长期来看要存200亿+数据;每条数据0.5KB;现在总共是分了1000个集合。200亿数据均分下去的话每个集合存2000万条数据,存储占用为1000万KB=10000M。chunk数=10000M/64M = 156个。考虑到倾斜numInitialChunks为200即可。 以这个依据决定预分片是大致合理的。

注:哈希分片才能用numInitialChunks,如果是范围分片的话,则需要手动splitAt

一、为什么要预先分片

        有的时候mongodb的读写量并不是很大,但是cpu负载相对较高;另外有时候在迁移数据的时候发现整体的进度好慢。这个时候可能就需要留意两种情况了:一个是mongodb是否频繁的balance;另一个是否有频繁的split操作。通过手动预分片我们可以尽量的避免这种频繁balance和split对cpu和IO资源的消耗。

二、chunk数/chunk范围/jumbochunk的查看

        还是那句话,建立反馈机制非常重要。最理想的情况