最近跟同事在讨论mongodb有没有垂直分表(垂直分集合)的必要,同事的观点:Mongodb垂直分表对性能提升不大,我的观点是垂直分表对性能提升比较大。话不多说,实践出真理。
首先分别建立两个集合 testData,添加5个字段, testDataPlus。添加20个字段。
testData集合结构如下:
testDataPlus集合的结构如下:
分别插入100w条数据。
针对一个字段进行查询:
结果出乎我意料,时间花费居然差不多,考虑到name字段排序在两个集合中位置一样,可能因为查询算法的原因导致性能差不多。于是替换了另外一个字段进行查询,结果如下:
扫描二维码关注公众号,回复:
9478192 查看本文章
出现了预期的效果,性能影响还是挺大的。
结论:字段多会影响查询速度,垂直分表有助于提升查询速度。
这个时候我又陷入另外一个思考,是否字段排序会影响查询性能?
事实告诉我,字段排序实际又不会影响性能
结论:垂直分表(集合)有助于提升性能
然鹅,垂直分表的必要性还是值得讨论和商榷的,垂直分表会破坏文档的完整性,对全量信息查询会增加复杂度,对新增数据也会产生额外的性能开销。大多数情况个人并不推荐垂直分表。