如何实现上亿数据在MySQL、ES、MongoDB上的深度分页兼容?

2026-04-06 08:521阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1802个文字,预计阅读时间需要8分钟。

如何实现上亿数据在MySQL、ES、MongoDB上的深度分页兼容?

面试题+真实经历+面试题:在数据量很大的情况下,如何实现深度分页?+面试时,或者准备面试中可能会遇到上述问题,大多数回答基本上是使用分库分表建索引,这是一种非常标准的做法。

面试题 & 真实经历

面试题:在数据量很大的情况下,怎么实现深度分页?

大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是很骨感,所以面试官一般会追问你一句,现在工期不足,人员不足,该怎么实现深度分页?

这个时候没有实际经验的同学基本麻爪,So,请听我娓娓道来。

惨痛的教训

首先必须明确一点:深度分页可以做,但是<font color="red">深度随机跳页绝对需要禁止。</font>

上一张图:

你们猜,我点一下第142360页,服务会不会爆炸?

像MySQL,MongoDB数据库还好,本身就是专业的数据库,处理的不好,最多就是慢,但如果涉及到ES,性质就不一样了,我们不得不利用 SearchAfter Api,去循环获取数据,这就牵扯到内存占用的问题,如果当时代码写的不优雅,直接就可能导致内存溢出。

阅读全文

本文共计1802个文字,预计阅读时间需要8分钟。

如何实现上亿数据在MySQL、ES、MongoDB上的深度分页兼容?

面试题+真实经历+面试题:在数据量很大的情况下,如何实现深度分页?+面试时,或者准备面试中可能会遇到上述问题,大多数回答基本上是使用分库分表建索引,这是一种非常标准的做法。

面试题 & 真实经历

面试题:在数据量很大的情况下,怎么实现深度分页?

大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是很骨感,所以面试官一般会追问你一句,现在工期不足,人员不足,该怎么实现深度分页?

这个时候没有实际经验的同学基本麻爪,So,请听我娓娓道来。

惨痛的教训

首先必须明确一点:深度分页可以做,但是<font color="red">深度随机跳页绝对需要禁止。</font>

上一张图:

你们猜,我点一下第142360页,服务会不会爆炸?

像MySQL,MongoDB数据库还好,本身就是专业的数据库,处理的不好,最多就是慢,但如果涉及到ES,性质就不一样了,我们不得不利用 SearchAfter Api,去循环获取数据,这就牵扯到内存占用的问题,如果当时代码写的不优雅,直接就可能导致内存溢出。

阅读全文