如何实现上亿数据在MySQL、ES、MongoDB上的深度分页兼容?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1802个文字,预计阅读时间需要8分钟。
面试题+真实经历+面试题:在数据量很大的情况下,如何实现深度分页?+面试时,或者准备面试中可能会遇到上述问题,大多数回答基本上是使用分库分表建索引,这是一种非常标准的做法。
面试题 & 真实经历
面试题:在数据量很大的情况下,怎么实现深度分页?
大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是很骨感,所以面试官一般会追问你一句,现在工期不足,人员不足,该怎么实现深度分页?
这个时候没有实际经验的同学基本麻爪,So,请听我娓娓道来。
惨痛的教训
首先必须明确一点:深度分页可以做,但是<font color="red">深度随机跳页绝对需要禁止。</font>
上一张图:
你们猜,我点一下第142360页,服务会不会爆炸?
像MySQL,MongoDB数据库还好,本身就是专业的数据库,处理的不好,最多就是慢,但如果涉及到ES,性质就不一样了,我们不得不利用 SearchAfter Api,去循环获取数据,这就牵扯到内存占用的问题,如果当时代码写的不优雅,直接就可能导致内存溢出。
本文共计1802个文字,预计阅读时间需要8分钟。
面试题+真实经历+面试题:在数据量很大的情况下,如何实现深度分页?+面试时,或者准备面试中可能会遇到上述问题,大多数回答基本上是使用分库分表建索引,这是一种非常标准的做法。
面试题 & 真实经历
面试题:在数据量很大的情况下,怎么实现深度分页?
大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是很骨感,所以面试官一般会追问你一句,现在工期不足,人员不足,该怎么实现深度分页?
这个时候没有实际经验的同学基本麻爪,So,请听我娓娓道来。
惨痛的教训
首先必须明确一点:深度分页可以做,但是<font color="red">深度随机跳页绝对需要禁止。</font>
上一张图:
你们猜,我点一下第142360页,服务会不会爆炸?
像MySQL,MongoDB数据库还好,本身就是专业的数据库,处理的不好,最多就是慢,但如果涉及到ES,性质就不一样了,我们不得不利用 SearchAfter Api,去循环获取数据,这就牵扯到内存占用的问题,如果当时代码写的不优雅,直接就可能导致内存溢出。

