通常建议2分片

采用分片数主要基于三方面因素考虑:1、性能;2、木桶效应;3、快速扩容。

单分片的性能最好,单分片存在木桶效应的原因是当有1个节点离线时,该节点分片 所在的副本分片所在的节点将承担两倍的工作,因此理论上性能下降最多1倍,性能最多下降1倍的前提是在节点没有离线前,每个节点的资源使用已经比较高(cpu,io,内存都使用了80-90%)的情况下,1个节点离线时,该节点分片所在的副本分片资源已经使用比较高(cpu,io,内存都使用了80-90%)的情况下还要再多承担一份任务,因此性能将下降1倍,但在实际运行的系统中,每个节点的资源使用一般不会达到80-90%(cpu,io,内存都使用了80-90%),观察多个实际项目一般也就是在40-50%左右,因此即使多承担一份工作,也不会下降1倍,经过测试在广西移动的场景下单分片部署情况下一个节点离线的情况下,性能下降43%。

采用多分片能够带来两方面的好处,降低木桶效应,扩容时可以直接搬移分片而不用重新计算hash,因此提升扩容的性能,但带来的坏处是分片多了,分片表的数量提升了1倍,列文件的数据也提高了1倍,因此IO时将访问更多的文件,以及IO总体上来看将更离散。在访问data cell时能够充分利用智能索引的情况下,多分片的性能下降会更多,因为原始可能通过智能索引只需要访问一个data cell,当分成多分片后,可能需要访问多个data cell,因此在IO是主要资源瓶颈的情况下,多分片在该场景下的性能下降更多,按照农行模拟场景测试2分片下降在5%-15%之间,4分片下降在20%-30%,在智能索引利用不充分,基本需要全表扫描的场景下,多分片相对单分片性能下降不明显,测试在5%左右。在1个节点离线的情况下,在广西移动的场景下2分片性能下降21%,另外两分片可以按照搬移分片的方式扩容1次,因此综合型性能,木桶效应和快速扩容三个因素的综合考虑,建议采用2分片。